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

[PATCHv3] git-rebase--interactive.sh: extend "edit" command to be more useful

From
Kevin Ballard <kevin@sb.org>
Date
Nov 24, 2010, 20:19 UTC
Message-ID
<1290629960-60917-1-git-send-email-kevin@sb.org>
In-Reply-To
<20101110015327.GB1503@burratino>

Extend the "edit" command to simply stop for editing if no sha1 is given or if the sha1 is equal to "-". This behaves the same as "x false" but is a bit friendlier for the user.

Signed-off-by: Kevin Ballard <kevin@sb.org>
---
Two changes since the last patch:
* Picked up the extended explanation suggested by Jonathan Nieder.
  I left off the last line about "noop" as that doesn't seem related.
* If the line given is "edit - some comments", emit "some comments" when
  stopped. This is undocumented, so if anyone has any suggestions for how
  it should be documented I'm all ears. I'm also not sure if it should use
  the output format I selected now, or if it should just emit the comment
  in place of the commit summary (e.g. Stopped at $sha1... $comment).
 git-rebase--interactive.sh |   30 +++++++++++++++++++++++++-----
 1 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 5934b97..176f735 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -469,12 +469,29 @@ do_next () {
 		comment_for_reflog edit
 
 		mark_action_done
-		pick_one $sha1 ||
-			die_with_patch $sha1 "Could not apply $sha1... $rest"
-		echo "$sha1" > "$DOTEST"/stopped-sha
-		make_patch $sha1
+		comment=''
+		if test -n "$sha1" -a "$sha1" != "-"; then
+			pick_one $sha1 ||
+				die_with_patch $sha1 "Could not apply $sha1... $rest"
+			echo "$sha1" > "$DOTEST"/stopped-sha
+			make_patch $sha1
+		else
+			# we just want to exit to the shell
+			# we don't have a valid $sha1 or $rest, so recreate that
+			# save the original $rest to a comment for later
+			comment="$rest"
+			line=$(git rev-list --pretty=oneline -1 --abbrev-commit --abbrev=7 HEAD)
+			sha1="${line%% *}"
+			rest="${line#* }"
+			echo "$sha1" > "$DOTEST"/stopped-sha
+		fi
 		git rev-parse --verify HEAD > "$AMEND"
 		warn "Stopped at $sha1... $rest"
+		if test -n "$comment"; then
+			warn
+			warn "	$comment"
+			warn
+		fi
 		warn "You can amend the commit now, with"
 		warn
 		warn "	git commit --amend"
@@ -1016,11 +1033,14 @@ first and then run 'git rebase --continue' again."
 # Commands:
 #  p, pick = use commit
 #  r, reword = use commit, but edit the commit message
-#  e, edit = use commit, but stop for amending
+#  e, edit = use commit (if specified), but stop to amend/examine/test
 #  s, squash = use commit, but meld into previous commit
 #  f, fixup = like "squash", but discard this commit's log message
 #  x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
 #
+# The argument to edit is optional; if left out or equal to "-",
+# it means to stop to examine or amend the previous commit.
+#
 # If you remove a line here THAT COMMIT WILL BE LOST.
 # However, if you remove everything, the rebase will be aborted.
 #
-- 
1.7.3.2.488.gc5e8
Previous: Kevin BallardNext: Jonathan Nieder
Message 33 of 39 in “git-rebase--interactive.sh: Add new command "shell"”
  1. git-rebase--interactive.sh: Add new command "shell"Kevin Ballard, Nov 4, 2010
  2. Kevin BallardNov 4, 2010
  3. Matthieu MoyNov 4, 2010
  4. Kevin BallardNov 4, 2010
  5. Ævar Arnfjörð BjarmasonNov 4, 2010
  6. Kevin BallardNov 4, 2010
  7. Ævar Arnfjörð BjarmasonNov 4, 2010
  8. Johannes SixtNov 4, 2010
  9. Erik Faye-LundNov 4, 2010
  10. Kevin BallardNov 4, 2010
  11. Yann DirsonNov 4, 2010
  12. Erik Faye-LundNov 4, 2010
  13. Eric RaibleNov 4, 2010
  14. Matthieu MoyNov 4, 2010
  15. Eric RaibleNov 4, 2010
  16. Jonathan NiederNov 4, 2010
  17. Yann DirsonNov 4, 2010
  18. Eric RaibleNov 4, 2010
  19. [PATCHv2] git-rebase--interactive.sh: extend "edit" command to be more usefulKevin Ballard, Nov 4, 2010
  20. Kevin BallardNov 4, 2010
  21. Johannes SixtNov 5, 2010
  22. Kevin BallardNov 5, 2010
  23. Junio C HamanoNov 8, 2010
  24. Kevin BallardNov 8, 2010
  25. Yann DirsonNov 8, 2010
  26. Jonathan NiederNov 10, 2010
  27. Kevin BallardNov 10, 2010
  28. Jonathan NiederNov 10, 2010
  29. Yann DirsonNov 10, 2010
  30. Matthieu MoyNov 10, 2010
  31. Jonathan NiederNov 10, 2010
  32. Kevin BallardNov 10, 2010
  33. [PATCHv3] git-rebase--interactive.sh: extend "edit" command to be more usefulKevin Ballard, Nov 24, 2010
  34. Jonathan NiederDec 3, 2010
  35. Kevin BallardDec 3, 2010
  36. Jonathan NiederDec 3, 2010
  37. Johannes SixtDec 3, 2010
  38. Jonathan NiederDec 3, 2010
  39. Kevin BallardDec 3, 2010

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.