Browse Source

Use diff* with --exit-code in git-am, git-rebase and git-merge-ours

This simplifies the shell code, reduces its memory footprint, and
speeds things up. The performance improvements should be noticable
when git-rebase works on big commits.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Alex Riesen 18 years ago committed by Junio C Hamano
parent
commit
06aff47b22
  1. 18
      git-am.sh
  2. 2
      git-merge-ours.sh
  3. 10
      git-rebase.sh

18
git-am.sh

@ -408,12 +408,10 @@ do @@ -408,12 +408,10 @@ do
# trust what the user has in the index file and the
# working tree.
resolved=
changed="$(git-diff-index --cached --name-only HEAD)"
if test '' = "$changed"
then
git-diff-index --quiet --cached HEAD && {
echo "No changes - did you forget to use 'git add'?"
stop_here_user_resolve $this
fi
}
unmerged=$(git-ls-files -u)
if test -n "$unmerged"
then
@ -435,13 +433,11 @@ do @@ -435,13 +433,11 @@ do
then
# Applying the patch to an earlier tree and merging the
# result may have produced the same tree as ours.
changed="$(git-diff-index --cached --name-only HEAD)"
if test '' = "$changed"
then
echo No changes -- Patch already applied.
go_next
continue
fi
git-diff-index --quiet --cached HEAD && {
echo No changes -- Patch already applied.
go_next
continue
}
# clear apply_status -- we have successfully merged.
apply_status=0
fi

2
git-merge-ours.sh

@ -9,6 +9,6 @@ @@ -9,6 +9,6 @@
# because the current index is what we will be committing as the
# merge result.

test "$(git-diff-index --cached --name-status HEAD)" = "" || exit 2
git-diff-index --quiet --cached HEAD || exit 2

exit 0

10
git-rebase.sh

@ -59,7 +59,7 @@ continue_merge () { @@ -59,7 +59,7 @@ continue_merge () {
die "$RESOLVEMSG"
fi

if test -n "`git-diff-index HEAD`"
if ! git-diff-index --quiet HEAD
then
if ! git-commit -C "`cat $dotest/current`"
then
@ -124,13 +124,11 @@ while case "$#" in 0) break ;; esac @@ -124,13 +124,11 @@ while case "$#" in 0) break ;; esac
do
case "$1" in
--continue)
diff=$(git-diff-files)
case "$diff" in
?*) echo "You must edit all merge conflicts and then"
git-diff-files --quiet || {
echo "You must edit all merge conflicts and then"
echo "mark them as resolved using git update-index"
exit 1
;;
esac
}
if test -d "$dotest"
then
prev_head="`cat $dotest/prev_head`"

Loading…
Cancel
Save