Currently, git-mv will declare "not under source control" on an attempt
to move a conflicted index entry. This patch adds an expect_failure
testcase for this case, since this is an artificial restriction. (However,
the scenario is not critical enough for the author to fix right now.)
Signed-off-by: Petr Baudis <redacted>
---
I don't really know if it is ok to make "feature requests" like this by
adding failing testcases...
t/t7001-mv.sh | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index 7e47931..241e9a2 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -173,6 +173,33 @@ test_expect_success 'git mv should not change sha1 of moved cache entry' '
rm -f dirty dirty2
+cat >multistage <<EOT
+100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 1 staged
+100755 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 2 staged
+100755 d00491fd7e5bb6fa28c517a0bb32b8b506539d4d 3 staged
+EOT
+
+# Rationale: I cannot git mv around a conflicted file. This is unnecessary
+# restriction in case another part of conflict resolution requires me to
+# move the file around.
+test_expect_failure 'git mv should move all stages of cache entry' '
+
+ rm -fr .git &&
+ git init &&
+ # git mv requires object to exist in working tree (bug?)
+ touch staged &&
+ git update-index --index-info <multistage &&
+ git ls-files --stage >lsf_output &&
+ test_cmp multistage lsf_output &&
+ git mv staged staged-mv &&
+ sed "s/staged/staged-mv/" <multistage >multistage-mv &&
+ git ls-files --stage >lsf_output &&
+ test_cmp multistage-mv lsf_output
+
+'
+
+rm -f multistage multistage-mv lsf_output staged
+
test_expect_failure 'git mv should overwrite symlink to a file' '
rm -fr .git &&