Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
octopus: do not do AND'ed merge base.
author
Junio C Hamano
<junkio@cox.net>
Thu, 10 Nov 2005 06:37:14 +0000
(22:37 -0800)
committer
Junio C Hamano
<junkio@cox.net>
Fri, 11 Nov 2005 08:50:24 +0000
(
00:50
-0800)
When doing an octopus, we incorrectly used the previous merge
base as the reference to compute next merge base. This was
unnecessary, because that can never be better than using the
original HEAD. And that is far simpler as well ;-).
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-merge-octopus.sh
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
ff56fe1
)
diff --git
a/git-merge-octopus.sh
b/git-merge-octopus.sh
index aa1cd2f10667baa7eeb4db34a0bce2e6c31a1c79..bb58e22a18bdaefae3f8005e7b0a0cfaba4b4185 100755
(executable)
--- a/
git-merge-octopus.sh
+++ b/
git-merge-octopus.sh
@@
-5,6
+5,9
@@
# Resolve two or more trees.
#
# Resolve two or more trees.
#
+LF='
+'
+
# The first parameters up to -- are merge bases; the rest are heads.
bases= head= remotes= sep_seen=
for arg
# The first parameters up to -- are merge bases; the rest are heads.
bases= head= remotes= sep_seen=
for arg
@@
-42,14
+45,18
@@
CNT=1 ;# counting our head
NON_FF_MERGE=0
for SHA1 in $remotes
do
NON_FF_MERGE=0
for SHA1 in $remotes
do
- common=$(git-merge-base $MRC $SHA1) ||
+ common=$(git-merge-base
--all
$MRC $SHA1) ||
die "Unable to find common commit with $SHA1"
die "Unable to find common commit with $SHA1"
- if test "$common" = $SHA1
- then
+ case "$common" in
+ ?*"$LF"?*)
+ die "Not trivially mergeable."
+ ;;
+ $SHA1)
echo "Already up-to-date with $SHA1"
continue
echo "Already up-to-date with $SHA1"
continue
- fi
+ ;;
+ esac
CNT=`expr $CNT + 1`
PARENT="$PARENT -p $SHA1"
CNT=`expr $CNT + 1`
PARENT="$PARENT -p $SHA1"
@@
-79,7
+86,15
@@
do
exit 2 ; # Automatic merge failed; should not be doing Octopus
next=$(git-write-tree 2>/dev/null)
fi
exit 2 ; # Automatic merge failed; should not be doing Octopus
next=$(git-write-tree 2>/dev/null)
fi
- MRC=$common
+
+ # We have merged the other branch successfully. Ideally
+ # we could implement OR'ed heads in merge-base, and keep
+ # a list of commits we have merged so far in MRC to feed
+ # them to merge-base, but we approximate it by keep using
+ # the current MRC. We used to update it to $common, which
+ # was incorrectly doing AND'ed merge-base here, which was
+ # unneeded.
+
MRT=$next
done
MRT=$next
done