git-mv: special case destination "."
Since the normalized basename of "." is "", the check for directory failed erroneously. Noticed by Fredrik Kuivinen. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
d78b0f3d6a
commit
c5203bdf66
@ -114,7 +114,10 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
|
|||||||
modes = xcalloc(count, sizeof(enum update_mode));
|
modes = xcalloc(count, sizeof(enum update_mode));
|
||||||
dest_path = copy_pathspec(prefix, argv + argc - 1, 1, 0);
|
dest_path = copy_pathspec(prefix, argv + argc - 1, 1, 0);
|
||||||
|
|
||||||
if (!lstat(dest_path[0], &st) &&
|
if (dest_path[0][0] == '\0')
|
||||||
|
/* special case: "." was normalized to "" */
|
||||||
|
destination = copy_pathspec(dest_path[0], argv + i, count, 1);
|
||||||
|
else if (!lstat(dest_path[0], &st) &&
|
||||||
S_ISDIR(st.st_mode)) {
|
S_ISDIR(st.st_mode)) {
|
||||||
dest_path[0] = add_slash(dest_path[0]);
|
dest_path[0] = add_slash(dest_path[0]);
|
||||||
destination = copy_pathspec(dest_path[0], argv + i, count, 1);
|
destination = copy_pathspec(dest_path[0], argv + i, count, 1);
|
||||||
|
@ -82,4 +82,8 @@ test_expect_failure \
|
|||||||
'do not move directory over existing directory' \
|
'do not move directory over existing directory' \
|
||||||
'mkdir path0 && mkdir path0/path2 && git-mv path2 path0'
|
'mkdir path0 && mkdir path0/path2 && git-mv path2 path0'
|
||||||
|
|
||||||
|
test_expect_success \
|
||||||
|
'move into "."' \
|
||||||
|
'git-mv path1/path2/ .'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user