Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
---
builtin/mv.c | 47 +++++++++++++++++++++--------------------------
1 file changed, 21 insertions(+), 26 deletions(-)
diff --git a/builtin/mv.c b/builtin/mv.c
index dcfcb11..988945c 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -171,42 +171,37 @@ int cmd_mv(int argc, const char **argv, const char
*prefix)
&& lstat(dst, &st) == 0)
bad = _("cannot move directory over file");
else if (src_is_dir) {
- int first = cache_name_pos(src, length);
+ int first = cache_name_pos(src, length), last;
if (first >= 0)
prepare_move_submodule(src, first,
submodule_gitfile + i);
- else {
- int last;
-
+ else if (index_range_of_same_dir(src, length,
+ &first, &last) < 1) {
modes[i] = WORKING_DIRECTORY;
- index_range_of_same_dir(src, length, &first,
&last);
if (last - first < 1)
bad = _("source directory is empty");
- else {
- int j, dst_len, n;
+ } else { /* last - first >= 1 */
+ int j, dst_len, n;
- n = argc + last - first;
- source = xrealloc(source, n *
sizeof(char *));
- destination = xrealloc(destination, n *
sizeof(char *));
- modes = xrealloc(modes, n * sizeof(enum
update_mode));
- submodule_gitfile =
- xrealloc(submodule_gitfile, n *
sizeof(char *));
+ modes[i] = WORKING_DIRECTORY;
+ n = argc + last - first;
+ source = xrealloc(source, n * sizeof(char *));
+ destination = xrealloc(destination, n *
sizeof(char *));
+ modes = xrealloc(modes, n * sizeof(enum
update_mode));
+ submodule_gitfile = xrealloc(submodule_gitfile,
n * sizeof(char *));
- dst = add_slash(dst);
- dst_len = strlen(dst);
+ dst = add_slash(dst);
+ dst_len = strlen(dst);
- for (j = 0; j < last - first; j++) {
- const char *path =
- active_cache[first +
j]->name;
- source[argc + j] = path;
- destination[argc + j] =
- prefix_path(dst,
dst_len,
- path + length +
1);
- modes[argc + j] = INDEX;
- submodule_gitfile[argc + j] =
NULL;
- }
- argc += last - first;
+ for (j = 0; j < last - first; j++) {
+ const char *path = active_cache[first +
j]->name;
+ source[argc + j] = path;
+ destination[argc + j] =
+ prefix_path(dst, dst_len, path
+ length + 1);
+ modes[argc + j] = INDEX;
+ submodule_gitfile[argc + j] = NULL;
}
+ argc += last - first;
}
} else if (cache_name_pos(src, length) < 0)
bad = _("not under version control");
--
2.1.0.rc0.78.gc0d8480
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html