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

Re: [PATCH] rebase -i: reread the todo list if `exec` touched it

From
SHSteve Hicks <sdh@google.com>
Date
Apr 26, 2017, 21:11 UTC
Message-ID
<CAABDHWZdsbP_NYW36nXc7WwjZf53PeEQrfaCUQrDpU4Zd9R2ew@mail.gmail.com>
In-Reply-To
<ffb8b1ddb7a8a22643d569565e1a4929b883fba5.1493234134.git.johannes.schindelin@gmx.de>

On Wed, Apr 26, 2017 at 12:17 PM, Johannes Schindelin <johannes.schindelin@gmx.de> wrote:

Show 15 quoted lines
> From: Stephen Hicks <sdh@google.com>
>
> In the scripted version of the interactive rebase, there was no internal
> representation of the todo list; it was re-read before every command.
> That allowed the hack that an `exec` command could append (or even
> completely rewrite) the todo list.
>
> This hack was broken by the partial conversion of the interactive rebase
> to C, and this patch reinstates it.
>
> We also add a small test to verify that this fix does not regress in the
> future.
>
> Signed-off-by: Stephen Hicks <sdh@google.com>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Thanks for shepherding this through, Johannes!

For context on this "hack", I have a script [1] that allows passing multiple branches at once (or all branches beneath a given root). It rewrites the todo file with some extra operations, like "branch", "push", and "pop", allows editing the modified todo, and then rewrites back to exec's. The "branch" operation, in particular, appends an "exec git checkout $branch; git reset --hard $commit" to the end of the todo, so that no branches are moved until after all rebases are successful. I've found this multi-branch rebase workflow to be very productive, and have been missing it the last few months, so I'm looking forward to it working again soon.

[1] https://github.com/shicks/git-ir
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 2 of 3 in “rebase -i: reread the todo list if `exec` touched it”
  1. rebase -i: reread the todo list if `exec` touched itJohannes Schindelin, Apr 26, 2017
  2. Steve HicksApr 26, 2017
  3. Johannes SchindelinApr 27, 2017

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.