diff options
authorFredrik Kuivinen <>2005-10-03 06:13:09 (GMT)
committerJunio C Hamano <>2005-10-03 07:25:42 (GMT)
commit88f8f0a52b2962452d89e854ad751283595473e4 (patch)
parent99a19b43021024e12ddb67831f8e5919f86a5979 (diff)
[PATCH] Enable and fix support for base less merges.
Let the merge strategies handle the base less case if they are able to do it. It also fixes to die if no common ancestors exists, instead of doing the wrong thing. Furthermore, it contains a small independent fix for and a fix for a base less code path in With this it's possible to use git merge -s recursive 'merge message' A B to do a base less merge of A and B. [jc: Thanks Fredrik for fixing the brown-paper-bag in git-merge. I fixed a small typo in git-merge-resolve fix; 'test' equality check is spelled with single equal sign -- C-style double equal sign is bashism.] Signed-off-by: Fredrik Kuivinen <> Signed-off-by: Junio C Hamano <>
3 files changed, 9 insertions, 3 deletions
diff --git a/ b/
index e3b04a0..966e81f 100755
--- a/
+++ b/
@@ -31,6 +31,12 @@ case "$remotes" in
exit 2 ;;
+# Give up if this is a baseless merge.
+if test '' = "$bases"
+ exit 2
git-update-index --refresh 2>/dev/null
git-read-tree -u -m $bases $head $remotes || exit 2
echo "Trying simple merge."
diff --git a/ b/
index d12a2a9..3465041 100755
--- a/
+++ b/
@@ -26,7 +26,7 @@ dropsave() {
savestate() {
# Stash away any local modifications.
git-diff-index -r -z --name-only $head |
- cpio -0 -o >"$GIR_DIR/MERGE_SAVE"
+ cpio -0 -o >"$GIT_DIR/MERGE_SAVE"
restorestate() {
@@ -103,7 +103,7 @@ echo "$head" >"$GIT_DIR/ORIG_HEAD"
case "$#,$common" in
- die "Unable to find common commit between $head_arg and $*"
+ # No common ancestors found. We need a real merge.
# If head can reach all the merge then we are up to date.
diff --git a/ b/
index 7e8855c..1b5bddd 100644
--- a/
+++ b/
@@ -213,7 +213,7 @@ def buildGraph(heads):
# Write the empty tree to the object database and return its SHA1
def writeEmptyTree():
- tmpIndex = os.environ['GIT_DIR'] + '/merge-tmp-index'
+ tmpIndex = os.environ.get('GIT_DIR', '.git') + '/merge-tmp-index'
def delTmpIndex():