aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2007-10-31 03:20:32 +0100
committerJunio C Hamano <gitster@pobox.com>2007-10-30 21:29:28 -0700
commitf91333d646e690d9a10717c96e166a069b2bb586 (patch)
tree130522dbb2b910823e5bcf4b95f1fdccd3946a25
parent2a9c53e03d8293577b5163910f178075725b39dd (diff)
downloadgit-f91333d646e690d9a10717c96e166a069b2bb586.tar.gz
git-f91333d646e690d9a10717c96e166a069b2bb586.tar.xz
git-rebase--interactive.sh: Make 3-way merge strategies work for -p.
git-rebase--interactive.sh used to pass all parents of a merge commit to git-merge, which means that we have at least 3 heads to merge: HEAD, first parent and second parent. So 3-way merge strategies like recursive wouldn't work. Fortunately, we have checked out the first parent right before the merge anyway, so that is HEAD. Therefore we can drop simply it from the list of parents, making 3-way strategies work for merge commits with only two parents. Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-rebase--interactive.sh2
1 files changed, 2 insertions, 0 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index db0405765..f28c3df20 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -165,6 +165,8 @@ pick_one_preserving_merges () {
eval "$author_script"
msg="$(git cat-file commit $sha1 | \
sed -e '1,/^$/d' -e "s/[\"\\]/\\\\&/g")"
+ # No point in merging the first parent, that's HEAD
+ new_parents=${new_parents# $first_parent}
# NEEDSWORK: give rerere a chance
if ! output git merge $STRATEGY -m "$msg" $new_parents
then