Duy Nguyen <pclo...@gmail.com> writes: > On Tue, Dec 3, 2013 at 3:32 PM, Matthieu Moy <matthieu....@imag.fr> wrote: >> Git used to trim the trailing slash, and make the command equivalent to >> 'git mv file no-such-dir', which created the file no-such-dir (while the >> trailing slash explicitly stated that it could only be a directory). >> >> This patch skips the trailing slash removal for the destination path. The >> path with its trailing slash is passed to rename(2), which errors out >> with the appropriate message: >> >> $ git mv file no-such-dir/ >> fatal: renaming 'file' failed: Not a directory > > There's something we probably should check. In d78b0f3 ([PATCH] > git-mv: add more path normalization - 2006-08-16), it mentions about > > git mv something/ somewhere/ > > there's no test in that commit so I don't know the actual input and > expected outcome.
To me, the expected outcome is "behave like Unix's mv" (which works with or without the trailing slash if somewhere exists). > If "somewhere" is a directory, it errors out with this patch and works > without it. I can't reproduce. I've added this to my patch (indeed, the area wasn't well tested), and the tests pass. diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh index e5c8084..3bfdfed 100755 --- a/t/t7001-mv.sh +++ b/t/t7001-mv.sh @@ -70,12 +70,31 @@ test_expect_success \ rm -f idontexist untracked1 untracked2 \ path0/idontexist path0/untracked1 path0/untracked2 \ .git/index.lock +rmdir path1 test_expect_success \ - 'moving to target with trailing slash' \ + 'moving to absent target with trailing slash' \ 'test_must_fail git mv path0/COPYING no-such-dir/ && test_must_fail git mv path0/COPYING no-such-dir// && - git mv path0/ no-such-dir/' + git mv path0/ no-such-dir/ && + test_path_is_dir no-such-dir' + +test_expect_success \ + 'clean up' \ + 'git reset --hard' + +test_expect_success \ + 'moving to existing untracked target with trailing slash' \ + 'mkdir path1 && + git mv path0/ path1/ && + test_path_is_dir path1/path0/' + +test_expect_success \ + 'moving to existing tracked target with trailing slash' \ + 'mkdir path2 && + >path2/file && git add path2/file && + git mv path1/path0/ path2/ && + test_path_is_dir path2/path0/' test_expect_success \ 'clean up' \ -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html