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

Re: [RFC/PATCH v2 0/8] rebase: new cherry-pick mode

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
May 30, 2013, 02:37 UTC
Message-ID
<CAMP44s2QtqgfuhyvJ=aZKaFHJzvwdWPkpyWjXOfAHACwTagOow@mail.gmail.com>
In-Reply-To
<7vehcpqsk4.fsf@alter.siamese.dyndns.org>
On Wed, May 29, 2013 at 6:23 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 21 quoted lines
> Felipe Contreras <felipe.contreras@gmail.com> writes:
>
>> We already rely on cherry-pick for the 'am' mode, but only when using the
>> --keep-empty option, and when in such mode the behavior of 'git rebase' changes
>> completely; more specifically; it's completely broken. Manually enabling
>> --keep-empty to be the default and running the test-suite shows a huge lot of
>> failures.
>>
>> After fixing the --keep-empty option by creating a new cherry-pick mode, this
>> patch series uses this new mode instead of the 'am' mode, and everything works.
>
> This may be a stupid question, but does --keep-empty only fail with
> the "am" mode?
>
> More specifically, how well does "rebase -i --keep-empty" work?
>
> If the answer is "very well", then it might make sense not to
> introduce yet another cherry-pick mode, but do exactly the same
> thing as what -p mode does, namely, to internally delegate the
> processing to "rebase -i" codepath.  After all, multi-pick mode of
> cherry-pick uses the same sequencer machinery as rebase -i uses,

No, that's not true. 'rebase -i' implements sequencing completely on it's own, and cherry picks commits one by one, it never uses the sequencer.c code.

Also, there's the issue of the 'git am' options, that of course only the am mode respects. I personally wouldn't mind getting rid of them for consistency purposes, but I know you would disagree.

But the real issue is that we would be detracting from the goal even more; to replace script code with C code.

> so if we are already producing a correct "rebase todo" sequencer
> insn list for "rebase -i" anyway, it should be the matter of not
> launching the editor to edit the initial insn sheet to make it
> non-interactive, isn't it?

Sure, and make 'git rebase' extremely much more complicated (and probably inefficient) in the process.

I don't mind going that way, but I want to rewrite 'git-rebase--interactive.sh' to use 'git cherry-pick' more, and maybe 'git-rebase--merge.sh' too, and the first step was to replace the simplest mode.

-- 
Felipe Contreras
Previous: Junio C Hamano
Message 21 of 21 in “rebase: new cherry-pick mode”
  1. 0/8 rebase: new cherry-pick modeFelipe Contreras, May 29, 2013
  2. 1/8 rebase: split the cherry-pick stuffFelipe Contreras, May 29, 2013
  3. 2/8 rebase: cherry-pick: fix mode storageFelipe Contreras, May 29, 2013
  4. Martin von ZweigbergkMay 29, 2013
  5. Felipe ContrerasMay 29, 2013
  6. 3/8 rebase: cherry-pick: fix sequence continuationFelipe Contreras, May 29, 2013
  7. Martin von ZweigbergkMay 29, 2013
  8. Felipe ContrerasMay 29, 2013
  9. Martin von ZweigbergkMay 29, 2013
  10. Felipe ContrerasMay 29, 2013
  11. Martin von ZweigbergkMay 29, 2013
  12. 4/8 rebase: cherry-pick: fix abort of cherry modeFelipe Contreras, May 29, 2013
  13. Martin von ZweigbergkMay 29, 2013
  14. Felipe ContrerasMay 29, 2013
  15. Stefano LattariniMay 29, 2013
  16. 5/8 rebase: cherry-pick: fix command invocationsFelipe Contreras, May 29, 2013
  17. 6/8 rebase: cherry-pick: fix status messagesFelipe Contreras, May 29, 2013
  18. 7/8 rebase: cherry-pick: automatically commit stageFelipe Contreras, May 29, 2013
  19. 8/8 rebase: use 'cherrypick' mode instead of 'am'Felipe Contreras, May 29, 2013
  20. Junio C HamanoMay 29, 2013
  21. Felipe ContrerasMay 30, 2013

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.