aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2006-12-28 02:35:27 -0500
committerJunio C Hamano <junkio@cox.net>2006-12-28 19:06:16 -0800
commit579c9bb1986005282e049c6ad8f594a1ffc35fba (patch)
treed3e6cf85e05a1193525a2563312acc70b259a8ae
parenta970e84e8ad23a740e456fb4191ed61becef8989 (diff)
downloadgit-579c9bb1986005282e049c6ad8f594a1ffc35fba.tar.gz
git-579c9bb1986005282e049c6ad8f594a1ffc35fba.tar.xz
Use merge-recursive in git-am -3.
By switching from merge-resolve to merge-recursive in the 3-way fallback behavior of git-am we gain a few benefits: * renames are automatically handled, like in rebase -m; * conflict hunks can reference the patch name; * its faster on Cygwin (less forks). Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-xgit-am.sh7
1 files changed, 5 insertions, 2 deletions
diff --git a/git-am.sh b/git-am.sh
index c3bbd78ea..7c0bb6084 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -88,10 +88,12 @@ It does not apply to blobs recorded in its index."
# This is not so wrong. Depending on which base we picked,
# orig_tree may be wildly different from ours, but his_tree
# has the same set of wildly different changes in parts the
- # patch did not touch, so resolve ends up canceling them,
+ # patch did not touch, so recursive ends up canceling them,
# saying that we reverted all those changes.
- git-merge-resolve $orig_tree -- HEAD $his_tree || {
+ eval GITHEAD_$his_tree='"$SUBJECT"'
+ export GITHEAD_$his_tree
+ git-merge-recursive $orig_tree -- HEAD $his_tree || {
if test -d "$GIT_DIR/rr-cache"
then
git-rerere
@@ -99,6 +101,7 @@ It does not apply to blobs recorded in its index."
echo Failed to merge in the changes.
exit 1
}
+ unset GITHEAD_$his_tree
}
prec=4