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

Re: [RFC PATCH 00/11] rebase -i run without forking rebase--interactive

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Mar 21, 2019, 14:40 UTC
Message-ID
<0f1ee77b-90e6-ef61-0aee-ff182c20a98c@gmail.com>
In-Reply-To
<87y359cfjj.fsf@evledraar.gmail.com>
On 20/03/2019 23:05, Ævar Arnfjörð Bjarmason wrote:
Show 24 quoted lines
> 
> On Tue, Mar 19 2019, Phillip Wood wrote:
> 
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> When the builtin rebase starts an interactive rebase it parses the
>> options and then repackages them and forks `rebase--interactive`. This
>> series refactors rebase--interactive so that interactive rebases can
>> be started by the builtin rebase without forking. My motivation was to
>> make it easier to debug the sequencer but this should help future
>> maintainability.
>>
>> This series involves some code movement so viewing the diffs with
>> --color-moved is recommended.
>>
>> These patches are based on a merge of master [e902e9bcae ("The second
>> batch", 2019-03-11)] and ag/sequencer-reduce-rewriting-todo ed35d18841
>> ("rebase--interactive: move transform_todo_file()", 2019-03-05). They
>> can be fetched from the tag rebase-i-no-fork/rfc at
>> https://github.com/phillipwood/git.git
> 
> Just a that the t/perf/*rebase* numbers look much better with this. I
> don't have these in front of me anymore, but over 10 runs with -O3 one
> of those long-runnings test was 30% faster.

That's surprising I wouldn't expect that much change as the time taken to fork shouldn't be that significant compared to the overall running time. I'll make a note to have a look at those tests.

> Another one (rebase -i) went from 0.02 to 0.01 sec, with that short
> amount of time I wonder (but didn't dig) if the test itself is broken...
Yeah, that sounds suspicious
Thanks for sharing those results
Phillip
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 24 of 40 in “rebase -i run without forking rebase--interactive”
  1. 00/11 rebase -i run without forking rebase--interactivePhillip Wood, Mar 19, 2019
  2. 02/11 rebase: rename write_basic_state()Phillip Wood, Mar 19, 2019
  3. 01/11 sequencer: always discard index after checkoutPhillip Wood, Mar 19, 2019
  4. Duy NguyenMar 20, 2019
  5. Phillip WoodMar 21, 2019
  6. 03/11 rebase: use OPT_RERERE_AUTOUPDATE()Phillip Wood, Mar 19, 2019
  7. 05/11 rebase -i: remove duplicationPhillip Wood, Mar 19, 2019
  8. 06/11 rebase -i: use struct commit when parsing optionsPhillip Wood, Mar 19, 2019
  9. 04/11 rebase -i: combine rebase--interactive.c with rebase.cPhillip Wood, Mar 19, 2019
  10. 07/11 rebase -i: use struct object_id for squash_ontoPhillip Wood, Mar 19, 2019
  11. 08/11 rebase -i: use struct rebase_options to parse argsPhillip Wood, Mar 19, 2019
  12. Junio C HamanoMar 21, 2019
  13. Phillip WoodMar 21, 2019
  14. Junio C HamanoMar 22, 2019
  15. Alban GruinMar 21, 2019
  16. Phillip WoodApr 10, 2019
  17. 10/11 rebase: use a common action enumPhillip Wood, Mar 19, 2019
  18. Ævar Arnfjörð BjarmasonMar 19, 2019
  19. Phillip WoodMar 21, 2019
  20. 09/11 rebase -i: use struct rebase_options in do_interactive_rebase()Phillip Wood, Mar 19, 2019
  21. 11/11 rebase -i: run without forking rebase--interactivePhillip Wood, Mar 19, 2019
  22. Josh SteadmonMar 20, 2019
  23. Ævar Arnfjörð BjarmasonMar 20, 2019
  24. Phillip WoodMar 21, 2019
  25. Junio C HamanoMar 21, 2019
  26. 00/12 Run rebase -i without forking rebase--interactivePhillip Wood, Apr 17, 2019
  27. 01/12 sequencer: always discard index after checkoutPhillip Wood, Apr 17, 2019
  28. 03/12 rebase: rename write_basic_state()Phillip Wood, Apr 17, 2019
  29. 04/12 rebase: use OPT_RERERE_AUTOUPDATE()Phillip Wood, Apr 17, 2019
  30. 02/12 rebase: don't translate trace stringsPhillip Wood, Apr 17, 2019
  31. Junio C HamanoApr 19, 2019
  32. Phillip WoodApr 25, 2019
  33. 05/12 rebase -i: combine rebase--interactive.c with rebase.cPhillip Wood, Apr 17, 2019
  34. 06/12 rebase -i: remove duplicationPhillip Wood, Apr 17, 2019
  35. 08/12 rebase -i: use struct object_id for squash_ontoPhillip Wood, Apr 17, 2019
  36. 07/12 rebase -i: use struct commit when parsing optionsPhillip Wood, Apr 17, 2019
  37. 09/12 rebase -i: use struct rebase_options to parse argsPhillip Wood, Apr 17, 2019
  38. 10/12 rebase -i: use struct rebase_options in do_interactive_rebase()Phillip Wood, Apr 17, 2019
  39. 12/12 rebase -i: run without forking rebase--interactivePhillip Wood, Apr 17, 2019
  40. 11/12 rebase: use a common action enumPhillip Wood, Apr 17, 2019

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.