Code

Merge branch 'jc/maint-1.6.1-checkout-m-custom-merge'
authorJunio C Hamano <gitster@pobox.com>
Sun, 17 Jan 2010 23:59:40 +0000 (15:59 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 17 Jan 2010 23:59:40 +0000 (15:59 -0800)
* jc/maint-1.6.1-checkout-m-custom-merge:
  checkout -m path: fix recreating conflicts

Conflicts:
t/t7201-co.sh

1  2 
builtin-checkout.c
t/t7201-co.sh

Simple merge
diff --cc t/t7201-co.sh
index ebfd34df36068f8808406a98d371731fb85012c4,3214ad29e146e252618f84b1845b77968ddb9f14..6442f710be8bcaea11931044d52deb5b75d8f7e0
@@@ -534,12 -534,61 +534,69 @@@ test_expect_success 'failing checkout -
  
  '
  
 +test_expect_success 'switch out of non-branch' '
 +      git reset --hard master &&
 +      git checkout master^0 &&
 +      echo modified >one &&
 +      test_must_fail git checkout renamer 2>error.log &&
 +      ! grep "^Previous HEAD" error.log
 +'
 +
+ (
+  echo "#!$SHELL_PATH"
+  cat <<\EOF
+ O=$1 A=$2 B=$3
+ cat "$A" >.tmp
+ exec >"$A"
+ echo '<<<<<<< filfre-theirs'
+ cat "$B"
+ echo '||||||| filfre-common'
+ cat "$O"
+ echo '======='
+ cat ".tmp"
+ echo '>>>>>>> filfre-ours'
+ rm -f .tmp
+ exit 1
+ EOF
+ ) >filfre.sh
+ chmod +x filfre.sh
+ test_expect_success 'custom merge driver with checkout -m' '
+       git reset --hard &&
+       git config merge.filfre.driver "./filfre.sh %O %A %B" &&
+       git config merge.filfre.name "Feel-free merge driver" &&
+       git config merge.filfre.recursive binary &&
+       echo "arm merge=filfre" >.gitattributes &&
+       git checkout -b left &&
+       echo neutral >arm &&
+       git add arm .gitattributes &&
+       test_tick &&
+       git commit -m neutral &&
+       git branch right &&
+       echo left >arm &&
+       test_tick &&
+       git commit -a -m left &&
+       git checkout right &&
+       echo right >arm &&
+       test_tick &&
+       git commit -a -m right &&
+       test_must_fail git merge left &&
+       (
+               for t in filfre-common left right
+               do
+                       grep $t arm || exit 1
+               done
+               exit 0
+       ) &&
+       mv arm expect &&
+       git checkout -m arm &&
+       test_cmp expect arm
+ '
  test_done