diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-02-10 12:54:15 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-10 12:54:15 -0800 |
commit | a42332c21723fde9f36b579f6b39a23aa1aac137 (patch) | |
tree | abeda76e7d7f4f38f2536ae2967eb6d1d6fcba15 | |
parent | Merge branch 'rs/maint-archive-match-pathspec' into maint (diff) | |
parent | checkout -m path: fix recreating conflicts (diff) | |
download | tgif-a42332c21723fde9f36b579f6b39a23aa1aac137.tar.xz |
Merge branch 'jc/maint-1.6.1-checkout-m-custom-merge' into maint
* jc/maint-1.6.1-checkout-m-custom-merge:
checkout -m path: fix recreating conflicts
Conflicts:
t/t7201-co.sh
-rw-r--r-- | builtin-checkout.c | 2 | ||||
-rwxr-xr-x | t/t7201-co.sh | 57 |
2 files changed, 58 insertions, 1 deletions
diff --git a/builtin-checkout.c b/builtin-checkout.c index 2708669383..67229fc216 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -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); diff --git a/t/t7201-co.sh b/t/t7201-co.sh index ebfd34df36..6442f710be 100755 --- a/t/t7201-co.sh +++ b/t/t7201-co.sh @@ -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 |