]> rtime.felk.cvut.cz Git - git.git/commitdiff
Merge branch 'jc/maint-1.6.1-checkout-m-custom-merge' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2010 20:54:15 +0000 (12:54 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Feb 2010 20:54:15 +0000 (12:54 -0800)
* jc/maint-1.6.1-checkout-m-custom-merge:
  checkout -m path: fix recreating conflicts

Conflicts:
t/t7201-co.sh

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

index 2708669383e21f038a1404e061b34bc4302e8a93..67229fc21607ceb51c34d77c4ef5682d96f1e909 100644 (file)
@@ -167,7 +167,7 @@ static int checkout_merged(int pos, struct checkout *state)
        fill_mm(active_cache[pos+2]->sha1, &theirs);
 
        status = ll_merge(&result_buf, path, &ancestor,
-                         &ours, "ours", &theirs, "theirs", 1);
+                         &ours, "ours", &theirs, "theirs", 0);
        free(ancestor.ptr);
        free(ours.ptr);
        free(theirs.ptr);
index ebfd34df36068f8808406a98d371731fb85012c4..6442f710be8bcaea11931044d52deb5b75d8f7e0 100755 (executable)
@@ -542,4 +542,61 @@ test_expect_success 'switch out of non-branch' '
        ! 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