From: Alex Riesen Date: Sun, 25 Mar 2007 00:56:13 +0000 (+0100) Subject: Use diff* with --exit-code in git-am, git-rebase and git-merge-ours X-Git-Tag: v1.5.1-rc2~8 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=06aff47b225506c4603a6f5ec5b4b16aa6a9d7ba;p=git.git 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 Signed-off-by: Junio C Hamano --- diff --git a/git-am.sh b/git-am.sh index 88af8dd25..e69ecbfdb 100755 --- a/git-am.sh +++ b/git-am.sh @@ -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 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 diff --git a/git-merge-ours.sh b/git-merge-ours.sh index 4f3d05388..2b6a5c0d1 100755 --- a/git-merge-ours.sh +++ b/git-merge-ours.sh @@ -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 diff --git a/git-rebase.sh b/git-rebase.sh index aadd580f8..1d96f3268 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -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 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`"