git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] Missing && in t/t7001.sh.
@ 2009-02-04  9:32 Matthieu Moy
  2009-02-04  9:32 ` [PATCH 2/3] [BUG] Add a testcase for "git mv -f" on untracked files Matthieu Moy
  0 siblings, 1 reply; 4+ messages in thread
From: Matthieu Moy @ 2009-02-04  9:32 UTC (permalink / raw)
  To: git, gitster; +Cc: Matthieu Moy

Without this, the exit status is only the one of the last line.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t7001-mv.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index ef2e78f..e4dfe95 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -55,7 +55,7 @@ test_expect_success \
      git mv -k untracked1 untracked2 path0 &&
      test -f untracked1 &&
      test -f untracked2 &&
-     test ! -f path0/untracked1
+     test ! -f path0/untracked1 &&
      test ! -f path0/untracked2'
 
 # clean up the mess in case bad things happen
-- 
1.6.1.2.321.g68da9

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] [BUG] Add a testcase for "git mv -f" on untracked files.
  2009-02-04  9:32 [PATCH 1/3] Missing && in t/t7001.sh Matthieu Moy
@ 2009-02-04  9:32 ` Matthieu Moy
  2009-02-04  9:32   ` [PATCH 3/3] builtin-mv.c: check for unversionned files before looking at the destination Matthieu Moy
  0 siblings, 1 reply; 4+ messages in thread
From: Matthieu Moy @ 2009-02-04  9:32 UTC (permalink / raw)
  To: git, gitster; +Cc: Matthieu Moy

This currently fails with:
git: builtin-mv.c:217: cmd_mv: Assertion `pos >= 0' failed.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 t/t7001-mv.sh |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index e4dfe95..52a47b5 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -58,6 +58,14 @@ test_expect_success \
      test ! -f path0/untracked1 &&
      test ! -f path0/untracked2'
 
+test_expect_failure \
+    'checking -f on untracked file with existing target' \
+    'touch path0/untracked1 &&
+     git mv -f untracked1 path0
+     test ! -f .git/index.lock &&
+     test -f untracked1 &&
+     test -f path0/untracked1'
+
 # clean up the mess in case bad things happen
 rm -f idontexist untracked1 untracked2 \
      path0/idontexist path0/untracked1 path0/untracked2 \
-- 
1.6.1.2.321.g68da9

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] builtin-mv.c: check for unversionned files before looking at the destination.
  2009-02-04  9:32 ` [PATCH 2/3] [BUG] Add a testcase for "git mv -f" on untracked files Matthieu Moy
@ 2009-02-04  9:32   ` Matthieu Moy
  2009-02-04 20:54     ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Matthieu Moy @ 2009-02-04  9:32 UTC (permalink / raw)
  To: git, gitster; +Cc: Matthieu Moy

The previous code was failing in the case where one moves an
unversionned file to an existing destination, with mv -f: the
"existing destination" was checked first, and the error was cancelled
by the force flag.

We now check the unrecoverable error first, which fixes the bug.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
---
 builtin-mv.c  |    8 ++++----
 t/t7001-mv.sh |    2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/builtin-mv.c b/builtin-mv.c
index bce9959..01270fe 100644
--- a/builtin-mv.c
+++ b/builtin-mv.c
@@ -162,7 +162,9 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
 				}
 				argc += last - first;
 			}
-		} else if (lstat(dst, &st) == 0) {
+		} else if (cache_name_pos(src, length) < 0)
+			bad = "not under version control";
+		else if (lstat(dst, &st) == 0) {
 			bad = "destination exists";
 			if (force) {
 				/*
@@ -177,9 +179,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
 				} else
 					bad = "Cannot overwrite";
 			}
-		} else if (cache_name_pos(src, length) < 0)
-			bad = "not under version control";
-		else if (string_list_has_string(&src_for_dst, dst))
+		} else if (string_list_has_string(&src_for_dst, dst))
 			bad = "multiple sources for the same target";
 		else
 			string_list_insert(dst, &src_for_dst);
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index 52a47b5..8fb3a56 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -58,7 +58,7 @@ test_expect_success \
      test ! -f path0/untracked1 &&
      test ! -f path0/untracked2'
 
-test_expect_failure \
+test_expect_success \
     'checking -f on untracked file with existing target' \
     'touch path0/untracked1 &&
      git mv -f untracked1 path0
-- 
1.6.1.2.321.g68da9

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 3/3] builtin-mv.c: check for unversionned files before looking at the destination.
  2009-02-04  9:32   ` [PATCH 3/3] builtin-mv.c: check for unversionned files before looking at the destination Matthieu Moy
@ 2009-02-04 20:54     ` Junio C Hamano
  0 siblings, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2009-02-04 20:54 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: git

Makes sense; thanks.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-02-04 20:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-04  9:32 [PATCH 1/3] Missing && in t/t7001.sh Matthieu Moy
2009-02-04  9:32 ` [PATCH 2/3] [BUG] Add a testcase for "git mv -f" on untracked files Matthieu Moy
2009-02-04  9:32   ` [PATCH 3/3] builtin-mv.c: check for unversionned files before looking at the destination Matthieu Moy
2009-02-04 20:54     ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).