diff options
author | Fredrik Kuivinen <freku045@student.liu.se> | 2005-10-03 08:13:09 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-10-03 00:25:42 -0700 |
commit | 88f8f0a52b2962452d89e854ad751283595473e4 (patch) | |
tree | 1167cf32d0708a77bed51a0bcc08334f282ab756 | |
parent | 99a19b43021024e12ddb67831f8e5919f86a5979 (diff) | |
download | git-88f8f0a52b2962452d89e854ad751283595473e4.tar.gz git-88f8f0a52b2962452d89e854ad751283595473e4.tar.xz |
[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-x | git-merge-resolve.sh | 6 | ||||
-rwxr-xr-x | git-merge.sh | 4 | ||||
-rw-r--r-- | gitMergeCommon.py | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh index e3b04a0e9..966e81ff7 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 d12a2a93b..3465041bc 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 7e8855c61..1b5bddd46 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) |