git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/3] rebase -i: several cleanups

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jun 25, 2007, 17:56 UTC
Message-ID
<Pine.LNX.4.64.0706251856300.4059@racer.site>

Support "--verbose" in addition to "-v", show short names in the list comment, clean up if there is nothing to do, and add several "test_ticks" in the test script.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 git-rebase--interactive.sh    |   19 +++++++++++++++----
 t/t3404-rebase-interactive.sh |    2 ++
 2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index ab36572..b95fe86 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -60,6 +60,11 @@ die_with_patch () {
 	die "$2"
 }
 
+die_abort () {
+	rm -rf "$DOTEST" 2> /dev/null
+	die "$1"
+}
+
 pick_one () {
 	case "$1" in -n) sha1=$2 ;; *) sha1=$1 ;; esac
 	git rev-parse --verify $sha1 || die "Invalid commit name: $sha1"
@@ -212,7 +217,7 @@ do
 	-C*)
 		die "Interactive rebase uses merge, so $1 does not make sense"
 		;;
-	-v)
+	-v|--verbose)
 		VERBOSE=t
 		;;
 	-i|--interactive)
@@ -264,8 +269,11 @@ do
 		echo $ONTO > "$DOTEST"/onto
 		test t = "$VERBOSE" && : > "$DOTEST"/verbose
 
+		SHORTUPSTREAM=$(git rev-parse --short $UPSTREAM)
+		SHORTHEAD=$(git rev-parse --short $HEAD)
+		SHORTONTO=$(git rev-parse --short $ONTO)
 		cat > "$TODO" << EOF
-# Rebasing $UPSTREAM..$HEAD onto $ONTO
+# Rebasing $SHORTUPSTREAM)..$SHORTHEAD onto $SHORTONTO
 #
 # Commands:
 #  pick = use commit
@@ -277,13 +285,16 @@ EOF
 			sed "s/^/pick /" >> "$TODO"
 
 		test -z "$(grep -ve '^$' -e '^#' < $TODO)" &&
-			die "Nothing to do"
+			die_abort "Nothing to do"
 
 		cp "$TODO" "$TODO".backup
 		${VISUAL:-${EDITOR:-vi}} "$TODO" ||
 			die "Could not execute editor"
 
-		git reset --hard $ONTO && do_rest
+		test -z "$(grep -ve '^$' -e '^#' < $TODO)" &&
+			die_abort "Nothing to do"
+
+		git checkout $ONTO && do_rest
 	esac
 	shift
 done
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 48aa8ea..19a3a8e 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -140,6 +140,7 @@ test_expect_success 'abort' '
 test_expect_success 'retain authorship' '
 	echo A > file7 &&
 	git add file7 &&
+	test_tick &&
 	GIT_AUTHOR_NAME="Twerp Snog" git commit -m "different author" &&
 	git tag twerp &&
 	git rebase -i --onto master HEAD^ &&
@@ -149,6 +150,7 @@ test_expect_success 'retain authorship' '
 test_expect_success 'squash' '
 	git reset --hard twerp &&
 	echo B > file7 &&
+	test_tick &&
 	GIT_AUTHOR_NAME="Nitfol" git commit -m "nitfol" file7 &&
 	echo "******************************" &&
 	FAKE_LINES="1 squash 2" git rebase -i --onto master HEAD~2 &&
-- 
1.5.2.2.3172.ge55a1-dirty
Next: Junio C Hamano
Message 1 of 6 in “rebase -i: several cleanups”
  1. 1/3 rebase -i: several cleanupsJohannes Schindelin, Jun 25, 2007
  2. Junio C HamanoJun 27, 2007
  3. Johannes SchindelinJun 27, 2007
  4. Junio C HamanoJun 27, 2007
  5. Johannes SchindelinJun 27, 2007
  6. Junio C HamanoJun 27, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.