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@xxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html