aboutsummaryrefslogtreecommitdiff
path: root/t/t6027-merge-binary.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-08-14 15:33:07 -0700
committerJunio C Hamano <gitster@pobox.com>2007-08-14 22:20:01 -0700
commitb798671fa935492ce511766bc99fb26b2892499b (patch)
tree6a28de76dea881193189cee59a6c499a254d4767 /t/t6027-merge-binary.sh
parent9fa3465d6be83c08ed24762c82eb33cb005729f3 (diff)
downloadgit-b798671fa935492ce511766bc99fb26b2892499b.tar.gz
git-b798671fa935492ce511766bc99fb26b2892499b.tar.xz
merge-recursive: do not rudely die on binary merge
When you try to merge a path that involves binary file-level merge, merge-recursive died rudely without cleaning up its own mess. A files added by the merge were left in the working tree, but the index was not written out (because it just punted and died), so it was cumbersome for the user to retry it by first running "git reset --hard". This changes merge-recursive to still warn but do the "binary" merge for such a path; leave the "our" version in the working tree, but still keep the path unmerged so that the user can sort it out. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t6027-merge-binary.sh')
-rwxr-xr-xt/t6027-merge-binary.sh67
1 files changed, 67 insertions, 0 deletions
diff --git a/t/t6027-merge-binary.sh b/t/t6027-merge-binary.sh
new file mode 100755
index 000000000..a7358f75b
--- /dev/null
+++ b/t/t6027-merge-binary.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+test_description='ask merge-recursive to merge binary files'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ cat ../test4012.png >m &&
+ git add m &&
+ git ls-files -s | sed -e "s/ 0 / 1 /" >E1 &&
+ test_tick &&
+ git commit -m "initial" &&
+
+ git branch side &&
+ echo frotz >a &&
+ git add a &&
+ echo nitfol >>m &&
+ git add a m &&
+ git ls-files -s a >E0 &&
+ git ls-files -s m | sed -e "s/ 0 / 3 /" >E3 &&
+ test_tick &&
+ git commit -m "master adds some" &&
+
+ git checkout side &&
+ echo rezrov >>m &&
+ git add m &&
+ git ls-files -s m | sed -e "s/ 0 / 2 /" >E2 &&
+ test_tick &&
+ git commit -m "side modifies" &&
+
+ git tag anchor &&
+
+ cat E0 E1 E2 E3 >expect
+'
+
+test_expect_success resolve '
+
+ rm -f a* m* &&
+ git reset --hard anchor &&
+
+ if git merge -s resolve master
+ then
+ echo Oops, should not have succeeded
+ false
+ else
+ git ls-files -s >current
+ diff -u current expect
+ fi
+'
+
+test_expect_success recursive '
+
+ rm -f a* m* &&
+ git reset --hard anchor &&
+
+ if git merge -s recursive master
+ then
+ echo Oops, should not have succeeded
+ false
+ else
+ git ls-files -s >current
+ diff -u current expect
+ fi
+'
+
+test_done