Add a new command "shell", which takes an option commit. It simply exits to the shell with the commit (if given) and a message telling the user how to resume the rebase. This is effectively the same thing as "x false" but much friendlier to the user. Signed-off-by: Kevin Ballard <kevin@xxxxxx> --- I discovered the need for this when I wanted to edit a commit, but apply a fixup first. The only way with the existing tools was an exec command that fails (e.g. "x false"). git-rebase--interactive.sh | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 9121bb6..3501757 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -566,6 +566,26 @@ do_next () { exit 1 fi ;; + !|"shell") + read -r command comment < "$TODO" + mark_action_done + # can't use $sha1 here for same reason as "exec" + line=$(git rev-list --pretty=oneline -1 --abbrev-commit --abbrev=7 HEAD) + sha1="${line%% *}" + rest="${line#* }" + echo "$sha1" > "$DOTEST"/stopped-sha + warn "Stopped at $sha1... $rest" + if test -n "$comment"; then + warn + warn " $comment" + fi + warn + warn "Once you are ready to continue, run" + warn + warn " git rebase --continue" + warn + exit 0 + ;; *) warn "Unknown command: $command $sha1 $rest" if git rev-parse --verify -q "$sha1" >/dev/null @@ -1007,6 +1027,7 @@ first and then run 'git rebase --continue' again." # 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 +# !, shell = Exit to the shell # # 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.202.g3b863.dirty -- 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