diff options
author | Alex Riesen <raa.lkml@gmail.com> | 2007-03-25 01:56:13 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-03-24 23:01:36 -0700 |
commit | 06aff47b225506c4603a6f5ec5b4b16aa6a9d7ba (patch) | |
tree | bef4b0af1de7ecdc5f8b5b374be4b86e4f654484 | |
parent | 2a18c266d04273be05ed29c589a5c29b8e68134d (diff) | |
download | git-06aff47b225506c4603a6f5ec5b4b16aa6a9d7ba.tar.gz git-06aff47b225506c4603a6f5ec5b4b16aa6a9d7ba.tar.xz |
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>
-rwxr-xr-x | git-am.sh | 18 | ||||
-rwxr-xr-x | git-merge-ours.sh | 2 | ||||
-rwxr-xr-x | git-rebase.sh | 10 |
3 files changed, 12 insertions, 18 deletions
@@ -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`" |