Skip to content

Commit 30d1275

Browse files
committed
TODO: sequencer: completely revamp the "todo" script parsing
TODO: remove the check that disallows TODO_PICK with REPLAY_REVERT and TODO_REVERT with REPLAY_CHERRY_PICK in the previous commit. When we came up with the "sequencer" idea, we really wanted to have kind of a plumbing equivalent of the interactive rebase. Hence the choice of words: the "todo" script, a "pick", etc. However, when it came time to implement the entire shebang, somehow this idea got lost and the sequencer was used as working horse for cherry-pick and revert instead. So as not to interfere with the interactive rebase, it even uses a separate directory to store its state. Furthermore, it also is stupidly strict about the "todo" script it accepts: while it parses commands in a way that was *designed* to be similar to the interactive rebase, it then goes on to *error out* if the commands disagree with the overall action (cherry-pick or revert). Finally, the sequencer code chose to deviate from the interactive rebase code insofar that it *reformats* the "todo" script instead of just writing the part of the parsed script that were not yet processed. This is not only unnecessary churn, but might well lose information that is valuable to the user (i.e. comments after the commands). Let's just bite the bullet and rewrite the entire parser; the code now becomes not only more elegant: it allows us to go on and teach the sequencer how to parse *true* "todo" scripts as used by the interactive rebase itself. In a way, the sequencer is about to grow up to do its older brother's job. Better. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent 7d9d683 commit 30d1275

1 file changed

Lines changed: 132 additions & 97 deletions

File tree

0 commit comments

Comments
 (0)