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

Re: Refactoring git-rebase.sh and git-rebase--interactive.sh

From
YDYann Dirson <ydirson@free.fr>
Date
Nov 4, 2010, 21:15 UTC
Message-ID
<20101104211556.GB8911@home.lan>
In-Reply-To
<201011030424.33093.chriscool@tuxfamily.org>
Hi Christian,
On Wed, Nov 03, 2010 at 04:24:32AM +0100, Christian Couder wrote:
> Now that GTAC (http://www.gtac.biz) is over, I plan to work on options 
> --continue, --abort and --skip for git cherry-pick/revert. After that I hope 
> to be able to refactor the code so that in the end common code is used by 
> cherry-pick/revert and rebase.
Sounds like "sequencer is coming back", great news :)

I don't know if you would like the idea enough, but something I often think would be good to have (and which could be useful for cherry-pick and other commands in need of a sequencer), would be more flexibility. The thing I find myself lacking most often, is the possibility to change my mind on an already-edited commit (ie, go back after --continue), the alternatives I can see today being:

- keeping a note on what to do on next pass (but may be more work in case
  of conflicts with further commits)
- fast-forward --continue'ing to keep curent changes and add new ones in
  next pass (same restriction)
- --abort'ing the rebase and starting it again, possibly fetching the
  changes from previous run via HEAD's reflog (not very handy either)
- checkout back to where you want to re-amend and cherry-pick those you
  already passed, essentially redoing an interactive rebase by hand

If we could go back to previous commit, while keeping changes done to the current one (say, --previous), or reverting to the original one (say, --revert). In the same way, continuing until another previously-unforeseen commit without the need to edit the todo file would be nice to have (eg. --next).

While I'm at it, another somewhat loosely option I have thought of would be to seed the todo file with "edit" commands instead of "pick", to make it possible to validate a series of patches one by one before sending. That could be generalized for running a test script automatically, that is inserting "x whatever" between all pick's - and my 1st idea would boil down to inserting arg-less "edit" or "x false" instead. Maybe some --stepcmd=<command> flag ?

-- 
Yann
Previous: Martin von ZweigbergkNext: Pat Notz
Message 5 of 9 in “Refactoring git-rebase.sh and git-rebase--interactive.sh”
  1. Martin von ZweigbergkNov 2, 2010
  2. Johannes SixtNov 2, 2010
  3. Christian CouderNov 3, 2010
  4. Martin von ZweigbergkNov 3, 2010
  5. Yann DirsonNov 4, 2010
  6. Pat NotzNov 4, 2010
  7. Christian CouderNov 5, 2010
  8. Martin von ZweigbergkNov 6, 2010
  9. Martin von ZweigbergkNov 7, 2010

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.