As with normal
rebase -i operates only on meta commits; it does not show information about submodule commits or allow them to be manipulated (doing so would make the command drastically more complicated and it's not even clear what it would look like).
pick -- just use existing rebase logic
reword -- similar to pick but allow user to change commit message (see below)
edit -- pauses before making meta commit, does make submodule commits
squash -- squash meta and associated sub commits into one
fixup -- like squash
exec -- execute a command
drop -- similar to deleting a commit, just don't use it
As long as we have a parser for the file format, we can just leave it in the
meta-sequencer directory as a record of what to do with each commit.
Sample file format
pick 18c456a message
# Rebase 91e3416..18c456a onto 91e3416 (1 command)
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
# These lines can be re-ordered; they are executed from top to bottom.
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
# Note that empty commits are commented out
Sample reword file format
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# interactive rebase in progress; onto 91e3416
# Last command done (1 command done):
# reword 18c456a message
# No commands remaining.
# You are currently rebasing branch 'master' on '91e3416'.
# Changes to be committed:
# new file: 2