git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Use diff* with --exit-code in git-am, git-rebase and git-merge-ours
@ 2007-03-25  0:56 Alex Riesen
  2007-03-25  6:01 ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: Alex Riesen @ 2007-03-25  0:56 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

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>
---
 git-am.sh         |   18 +++++++-----------
 git-merge-ours.sh |    2 +-
 git-rebase.sh     |   10 ++++------
 3 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index 88af8dd..e69ecbf 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 4f3d053..2b6a5c0 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 aadd580..1d96f32 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`"
-- 
1.5.1.rc1.63.g59cc5

^ permalink raw reply related	[flat|nested] 5+ messages in thread
* [PATCH] Use diff* with --exit-code in git-am, git-rebase and git-merge-ours
@ 2007-03-25  0:42 Alex Riesen
  2007-03-25  0:49 ` Alex Riesen
  0 siblings, 1 reply; 5+ messages in thread
From: Alex Riesen @ 2007-03-25  0:42 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

This simplifies the shell code and reduces memory footprint, speeds
things up. The performance improvements should be noticable by
git-rebase, when it is used to rebase big commits.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 git-am.sh         |   18 +++++++-----------
 git-merge-ours.sh |    2 +-
 git-rebase.sh     |   10 ++++------
 3 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/git-am.sh b/git-am.sh
index 88af8dd..e9d8d57 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 --exit-code --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 --exit-code --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 4f3d053..40491f2 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 --exit-code --cached HEAD || exit 2
 
 exit 0
diff --git a/git-rebase.sh b/git-rebase.sh
index aadd580..860c0ce 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 --exit-code 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 --exit-code || {
+			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`"
-- 
1.5.1.rc1.63.g59cc5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-03-25  9:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-25  0:56 [PATCH] Use diff* with --exit-code in git-am, git-rebase and git-merge-ours Alex Riesen
2007-03-25  6:01 ` Junio C Hamano
2007-03-25  9:33   ` Alex Riesen
  -- strict thread matches above, loose matches on Subject: below --
2007-03-25  0:42 Alex Riesen
2007-03-25  0:49 ` Alex Riesen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).