Browse Source

Merge branch 'sp/merge' (early part)

* 'sp/merge' (early part):
  Improve merge performance by avoiding in-index merges.
maint
Junio C Hamano 18 years ago
parent
commit
6de33478af
  1. 40
      git-merge.sh

40
git-merge.sh

@ -301,24 +301,30 @@ f,*)
;; ;;
?,1,*,) ?,1,*,)
# We are not doing octopus, not fast forward, and have only # We are not doing octopus, not fast forward, and have only
# one common. See if it is really trivial. # one common.
git var GIT_COMMITTER_IDENT >/dev/null || exit

echo "Trying really trivial in-index merge..."
git-update-index --refresh 2>/dev/null git-update-index --refresh 2>/dev/null
if git-read-tree --trivial -m -u -v $common $head "$1" && case " $use_strategies " in
result_tree=$(git-write-tree) *' recursive '*|*' recur '*)
then : run merge later
echo "Wonderful." ;;
result_commit=$( *)
echo "$merge_msg" | # See if it is really trivial.
git-commit-tree $result_tree -p HEAD -p "$1" git var GIT_COMMITTER_IDENT >/dev/null || exit
) || exit echo "Trying really trivial in-index merge..."
finish "$result_commit" "In-index merge" if git-read-tree --trivial -m -u -v $common $head "$1" &&
dropsave result_tree=$(git-write-tree)
exit 0 then
fi echo "Wonderful."
echo "Nope." result_commit=$(
echo "$merge_msg" |
git-commit-tree $result_tree -p HEAD -p "$1"
) || exit
finish "$result_commit" "In-index merge"
dropsave
exit 0
fi
echo "Nope."
esac
;; ;;
*) *)
# An octopus. If we can reach all the remote we are up to date. # An octopus. If we can reach all the remote we are up to date.

Loading…
Cancel
Save