summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrik Kuivinen <freku045@student.liu.se>2005-10-03 08:13:09 +0200
committerJunio C Hamano <junkio@cox.net>2005-10-03 00:25:42 -0700
commit88f8f0a52b2962452d89e854ad751283595473e4 (patch)
tree1167cf32d0708a77bed51a0bcc08334f282ab756
parent99a19b43021024e12ddb67831f8e5919f86a5979 (diff)
downloadgit-88f8f0a52b2962452d89e854ad751283595473e4.tar.gz
[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 git-resolve.sh to die if no common ancestors exists, instead of doing the wrong thing. Furthermore, it contains a small independent fix for git-merge.sh and a fix for a base less code path in gitMergeCommon.py. 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 <freku045@student.liu.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-xgit-merge-resolve.sh6
-rwxr-xr-xgit-merge.sh4
-rw-r--r--gitMergeCommon.py2
3 files changed, 9 insertions, 3 deletions
diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh
index e3b04a0e95..966e81ff7d 100755
--- a/git-merge-resolve.sh
+++ b/git-merge-resolve.sh
@@ -31,6 +31,12 @@ case "$remotes" in
exit 2 ;;
esac
+# Give up if this is a baseless merge.
+if test '' = "$bases"
+then
+ exit 2
+fi
+
git-update-index --refresh 2>/dev/null
git-read-tree -u -m $bases $head $remotes || exit 2
echo "Trying simple merge."
diff --git a/git-merge.sh b/git-merge.sh
index d12a2a93b1..3465041bc4 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -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.
;;
1,"$1")
# If head can reach all the merge then we are up to date.
diff --git a/gitMergeCommon.py b/gitMergeCommon.py
index 7e8855c617..1b5bddd467 100644
--- a/gitMergeCommon.py
+++ b/gitMergeCommon.py
@@ -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():
try:
os.unlink(tmpIndex)