From 3772923f1429f2888074e698c36c071b864effe3 Mon Sep 17 00:00:00 2001 From: Michael J Gruber Date: Wed, 14 Jan 2009 18:03:21 +0100 Subject: [PATCH 1/2] add test cases for "git mv -k" Add test cases for ignoring nonexisting and untracked files using the -k option to "git mv". There is one known breakage related to multiple untracked files specfied as consecutive arguments. Signed-off-by: Michael J Gruber Signed-off-by: Junio C Hamano --- t/t7001-mv.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh index 66bb1264f..fddcdde6e 100755 --- a/t/t7001-mv.sh +++ b/t/t7001-mv.sh @@ -38,6 +38,31 @@ test_expect_success \ 'git diff-tree -r -M --name-status HEAD^ HEAD | \ grep "^R100..*path1/COPYING..*path0/COPYING"' +test_expect_success \ + 'checking -k on non-existing file' \ + 'git mv -k idontexist path0' + +test_expect_success \ + 'checking -k on untracked file' \ + 'touch untracked1 && + git mv -k untracked1 path0 && + test -f untracked1 && + test ! -f path0/untracked1' + +test_expect_failure \ + 'checking -k on multiple untracked files' \ + 'touch untracked2 && + git mv -k untracked1 untracked2 path0 && + test -f untracked1 && + test -f untracked2 && + test ! -f path0/untracked1 + test ! -f path0/untracked2' + +# clean up the mess in case bad things happen +rm -f idontexist untracked1 untracked2 \ + path0/idontexist path0/untracked1 path0/untracked2 \ + .git/index.lock + test_expect_success \ 'adding another file' \ 'cp ../../README path0/README && From be17262d13f5f3df5ee9635b11dad180613e9cbd Mon Sep 17 00:00:00 2001 From: Michael J Gruber Date: Wed, 14 Jan 2009 18:03:22 +0100 Subject: [PATCH 2/2] fix handling of multiple untracked files for git mv -k The "-k" option to "git mv" should allow specifying multiple untracked files. Currently, multiple untracked files raise an assertion if they appear consecutively as arguments. Fix this by decrementing the loop index after removing one entry from the array of arguments. Signed-off-by: Michael J Gruber Signed-off-by: Junio C Hamano --- builtin-mv.c | 1 + t/t7001-mv.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/builtin-mv.c b/builtin-mv.c index 4f65b5ae9..bce995929 100644 --- a/builtin-mv.c +++ b/builtin-mv.c @@ -192,6 +192,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix) memmove(destination + i, destination + i + 1, (argc - i) * sizeof(char *)); + i--; } } else die ("%s, source=%s, destination=%s", diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh index fddcdde6e..19493c805 100755 --- a/t/t7001-mv.sh +++ b/t/t7001-mv.sh @@ -49,7 +49,7 @@ test_expect_success \ test -f untracked1 && test ! -f path0/untracked1' -test_expect_failure \ +test_expect_success \ 'checking -k on multiple untracked files' \ 'touch untracked2 && git mv -k untracked1 untracked2 path0 &&