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

Re: [PATCH 00/22] Prepare the sequencer for the upcoming rebase -i patches

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Sep 2, 2016, 13:56 UTC
Message-ID
<alpine.DEB.2.20.1609021432070.129229@virtualbox>
In-Reply-To
<ced4a190-6a79-e608-ca0b-3815267c5f93@gmail.com>
Hi Kuba,
On Fri, 2 Sep 2016, Jakub Narębski wrote:
Show 8 quoted lines
> W dniu 29.08.2016 o 10:03, Johannes Schindelin pisze:
> 
> > This patch series marks the  '4' in the countdown to speed up rebase -i
> > by implementing large parts in C. It is based on the `libify-sequencer`
> > patch series that I submitted last week.
> 
> Which of those got reviewed (and perhaps accepted), and which of those
> needs review still?  What is subject of their cover letter?

Most of the patch series I sent before last week got accepted. Only one got rejected, IIRC, and replaced by a better solution (3727318 (Merge branch 'jk/test-send-sh-x-trace-elsewhere', 2016-05-17)).

The patch series I submitted as part of my rebase--helper work that were accepted:

b232439 (Merge branch 'js/t3404-typofix', 2016-05-17) 7b02771 (Merge branch 'js/perf-rebase-i', 2016-05-23) 3437017 (Merge branch 'js/perf-on-apple', 2016-07-06) 62e5e83 (Merge branch 'js/find-commit-subject-ignore-leading-blanks', 2016-07-11) c510926 (Merge branch 'js/sign-empty-commit-fix', 2016-07-13) 6c35952 (Merge branch 'js/t3404-grammo-fix', 2016-07-13) 63641fb (Merge branch 'js/log-to-diffopt-file', 2016-07-19) 3d55eea (Merge branch 'js/am-call-theirs-theirs-in-fallback-3way', 2016-07-19) c97268c (Merge branch 'js/rebase-i-tests', 2016-07-28) 1a5f1a3 (Merge branch 'js/am-3-merge-recursive-direct', 2016-08-10)

You will note that I broke out a couple of patch series that do not strictly have anything to do with the rebase--helper, such as perf-on-apple. Nevertheless, they were part of a 99-strong patch series that was my initial working rebase--helper, which I have used ever since to perform all of my interactive rebases.

There are still a couple of patch series in flight. Let me list them by the tags created by my mail-patch-series.sh script:

https://github.com/dscho/git/releases/tag/libify-sequencer-v2 https://github.com/dscho/git/releases/tag/require-clean-work-tree-v1 https://github.com/dscho/git/releases/tag/prepare-sequencer-v1 https://github.com/dscho/git/releases/tag/sequencer-i-v1 https://github.com/dscho/git/releases/tag/rebase--helper-v1

These tags all contain links to the cover letter as stored on public-inbox.org, identified by the Message-ID.

Please note that the first four of this batch of five already saw substantial work-after-review, thanks in part to your helpful comments. You may appreciate the fact that a link of the form

https://github.com/dscho/git/compare/libify-sequencer-v2...libify-sequencer

shows you where I am at, although it cannot give you a real interdiff because I rebased to a newer version of upstream/master in the meantime.

Finally, there is one last patch series that I did not yet submit: the 'rebase-i-extra' patch series. However, as I continuously update the overall 'interactive-rebase' branch thicket (and have done so since the very beginning of my work on the rebase--helper), it is relatively easy to see what is left:

https://github.com/dscho/git/compare/rebase--helper...interactive-rebase

BTW thanks for making me dig out all of this information (it did take a while to uncover it...), as I am so totally going to use that in a blog post.

> > The reason to split these two patch series is simple: to keep them at a
> > sensible size.
> 
> That's good.
Thanks. I really try to be sensible with other people's time.

Even more so after being so offended by the talk at the most recent Git Merge that stated that some people deliberately waste contributors' time because they value their own time so much more. I am *really* offended by that.

As a maintainer of Git for Windows, I do everything in my power to strike a sensible balance between how much time I spend on improving the software and how much time I ask others to do so.

Show 6 quoted lines
> > The two patch series after that are much smaller: a two-patch "series"
> > that switches rebase -i to use the sequencer (except with --root or
> > --preserve-merges), and a couple of patches to move several pretty
> > expensive script processing steps to C (think: autosquash).
> 
> I can understand --preserve-merges, but what is the problem with --root?

The problem with --root is that it *creates* an initial commit. It is empty, and will be amended. It would most likely not be a lot of work, but I really wanted this work to be incremental, focusing on the most important aspects first.

In fact, I do hope that somebody with the need for --root will take the baton and run with it.

Show 8 quoted lines
> > The end game of this patch series is a git-rebase--helper that makes
> > rebase -i 5x faster on Windows (according to t/perf/p3404). Travis
> > says that even MacOSX and Linux benefit (4x and 3x, respectively).
> 
> So do I understand correctly that end goal for *this* series is to move
> most of processing to git-rebase--helper, but full builtin-ification
> (and retiring git-rebase.sh to contrib/examples/) would have to wait for
> later?
Oh yes!

Retiring git-rebase.sh is *far, far, far* in the future. We really missed the boat a *looooong* time ago to turn this from a hacky shell script into a proper C builtin.

There is so much more to do before git-rebase.sh can be retired.

For starters, git-rebase.sh is actually just a glorified command-line option parser and front-end to git-rebase--am.sh, git-rebase--interactive.sh and git-rebase--merge.sh.

To retire it, those three shell scripts need to be *completely* built-in first.

(Actually, for the --preserve-merges case, I could imagine that we simply refactor it into its own shell script and call that from a builtin git-rebase, until we retire --preserve-merges, but that's a couple of years down the road.)

So the first goal would be to retire git-rebase--interactive.sh. For that to happen, --root needs to be supported first. Then the --preserve-merges stuff needs to be refactored into its own shell script. And then the command-line option parsing needs to be moved to rebase--helper, too. And *then* git-rebase--interactive.sh can be retired.

As I stated earlier, my hope is that the rebase--helper work is only an initial step, opening the door for other contributors to tackle independent parts of making git-rebase a builtin.

Show 6 quoted lines
> [...]
> 
> I'd like here to summarize the discussion (my review, Dennis review,
> Johannes Sixt and Junio comments).
> 
> If there are no comments, it means no problems or minor changes.

Please keep in mind that my current state (local, and pushed to my GitHub repository) has advanced substantially. I am reluctant to send it out yet because I still need to send out rebase-i-extra first, so that it gets *some* visibility before v2.10.0.

Show 21 quoted lines
> > Johannes Schindelin (22):
> >   sequencer: use static initializers for replay_opts
> There is no need for putting zeros in static initializer.  Commit
> message expanded.
> 
> >   sequencer: use memoized sequencer directory path
> >   sequencer: avoid unnecessary indirection
> >   sequencer: future-proof remove_sequencer_state()
> Leftover unrelated chunk removed.
> 
> >   sequencer: allow the sequencer to take custody of malloc()ed data
> Is introducing new *_entrust() mechanism (which needs docs, at least
> as comments) worth it, instead of just strdup everything and free?
> If it is: naming of function parameter + example in commit message.
> 
> >   sequencer: release memory that was allocated when reading options
> See above.
> 
> >   sequencer: future-proof read_populate_todo()
> Possibly mention which functions were not future-proofed because
> of planned for the subsequent patch full rewrite.

Note that this commit is about read_populate_todo(), not about save_todo(). So I do not think that we should mention anything in this commit's message about other functions that may be rewritten instead of being future-proofed..

> >   sequencer: remove overzealous assumption
> Overzealous assumptions, or a worthy check?  Perhaps just remove check
> for rebase -i in future commit, and keep test.  Perhaps remove test
> temporarily.

As mentioned earlier, I bit the bullet and reimplemented that logic. Mostly to fend off more comments in this direction.

> >   sequencer: completely revamp the "todo" script parsing
> This removes check; it should return if it was worthy.  Some discussion
> about eager versus lazy parsing of commits, but IMHO it should be left
> for later, if considered worth it.

Again, it was reintroduced. The test to check for the overzealous assumption was not removed, and it passes, to prove that I did it right.

Show 32 quoted lines
> >   sequencer: avoid completely different messages for different actions
> Fix l10n or drop (and not introduce lego translation).
> 
> >   sequencer: get rid of the subcommand field
> >   sequencer: refactor the code to obtain a short commit name
> Explain reason behind this change in the commit mesage.
> 
> >   sequencer: remember the onelines when parsing the todo file
> Lazy or eager again; "exec", "noop" and --preserve-merges.
> 
> >   sequencer: prepare for rebase -i's commit functionality
> Add helper function, possibly extract helper function.  Rephrase block
> comment.
> 
> "[PATCH] am: refactor read_author_script()" from Junio.
> 
> >   sequencer: introduce a helper to read files written by scripts
> Perhaps add why not use open + strbuf_getline to commit message...
> 
> >   sequencer: prepare for rebase -i's GPG settings
> Possibly fixes bug.  Use *_entrust() or strdup to not leak memory
> (and to not crash when freeing memory).
> 
> >   sequencer: allow editing the commit message on a case-by-case basis
> Enhance the commit message.
> 
> >   sequencer: support amending commits
> >   sequencer: support cleaning up commit messages
> >   sequencer: remember do_recursive_merge()'s return value
> >   sequencer: left-trim the lines read from the script
> >   sequencer: refactor write_message()
> Enhance the commit message.  Quote path in messages while at it.

Apart from the l10n issues, I think I addressed them all locally, and pushed the result out to my GitHub repository, although I plan to send out additional iterations only after releasing Git for Windows v2.10.0.

Show 6 quoted lines
> > Based-On: libify-sequencer at https://github.com/dscho/git
> > Fetch-Base-Via: git fetch https://github.com/dscho/git libify-sequencer
> > Published-As: https://github.com/dscho/git/releases/tag/prepare-sequencer-v1
> > Fetch-It-Via: git fetch https://github.com/dscho/git prepare-sequencer-v1
> 
> An unrelated question: Dscho, how are you generating above lines?

It's the `mail-patch-series.sh` script, in conjunction with setting the config variable mail.publishremoteto to point to my GitHub remote. You can find the `mail-patch-series.sh` script here:

	https://github.com/dscho/mail-patch-series

I probably forgot to adjust the README to reflect the most recent changes (such as the `--basedon` feature)... PRs welcome [*1*].

Ciao, Dscho

Footnote *1*: https://raw.githubusercontent.com/dscho/images/master/i-can-haz-pull-request.png

Previous: Jakub NarębskiNext: Johannes Schindelin
Message 133 of 352 in “Prepare the sequencer for the upcoming rebase -i patches”
  1. 00/22 Prepare the sequencer for the upcoming rebase -i patchesJohannes Schindelin, Aug 29, 2016
  2. 02/22 sequencer: use memoized sequencer directory pathJohannes Schindelin, Aug 29, 2016
  3. Jakub NarębskiAug 29, 2016
  4. Johannes SchindelinAug 29, 2016
  5. 01/22 sequencer: use static initializers for replay_optsJohannes Schindelin, Aug 29, 2016
  6. Dennis KaarsemakerAug 29, 2016
  7. Johannes SchindelinAug 29, 2016
  8. Jakub NarębskiAug 29, 2016
  9. Johannes SchindelinAug 29, 2016
  10. 03/22 sequencer: avoid unnecessary indirectionJohannes Schindelin, Aug 29, 2016
  11. Jakub NarębskiAug 29, 2016
  12. Johannes SchindelinAug 29, 2016
  13. 04/22 sequencer: future-proof remove_sequencer_state()Johannes Schindelin, Aug 29, 2016
  14. Dennis KaarsemakerAug 29, 2016
  15. Johannes SchindelinAug 29, 2016
  16. Johannes SchindelinAug 29, 2016
  17. 05/22 sequencer: allow the sequencer to take custody of malloc()ed dataJohannes Schindelin, Aug 29, 2016
  18. Jakub NarębskiAug 29, 2016
  19. Johannes SixtAug 30, 2016
  20. Johannes SchindelinAug 30, 2016
  21. Johannes SchindelinAug 30, 2016
  22. Jakub NarębskiAug 30, 2016
  23. Junio C HamanoAug 30, 2016
  24. Johannes SchindelinAug 31, 2016
  25. 06/22 sequencer: release memory that was allocated when reading optionsJohannes Schindelin, Aug 29, 2016
  26. Jakub NarębskiAug 30, 2016
  27. Johannes SchindelinAug 30, 2016
  28. Johannes SixtAug 30, 2016
  29. Junio C HamanoAug 30, 2016
  30. Jakub NarębskiAug 30, 2016
  31. Junio C HamanoAug 30, 2016
  32. Johannes SchindelinAug 31, 2016
  33. 07/22 sequencer: future-proof read_populate_todo()Johannes Schindelin, Aug 29, 2016
  34. Jakub NarębskiAug 30, 2016
  35. Johannes SchindelinAug 30, 2016
  36. 08/22 sequencer: remove overzealous assumptionJohannes Schindelin, Aug 29, 2016
  37. Jakub NarębskiAug 31, 2016
  38. Johannes SchindelinAug 31, 2016
  39. Jakub NarębskiAug 31, 2016
  40. Johannes SchindelinSep 1, 2016
  41. Jakub NarębskiSep 1, 2016
  42. Junio C HamanoAug 31, 2016
  43. Johannes SchindelinSep 1, 2016
  44. 09/22 sequencer: completely revamp the "todo" script parsingJohannes Schindelin, Aug 29, 2016
  45. Jakub NarębskiAug 31, 2016
  46. Stefan BellerAug 31, 2016
  47. Johannes SchindelinSep 1, 2016
  48. Junio C HamanoSep 1, 2016
  49. Johannes SchindelinSep 1, 2016
  50. Jakub NarębskiSep 1, 2016
  51. Johannes SchindelinSep 9, 2016
  52. 10/22 sequencer: avoid completely different messages for different actionsJohannes Schindelin, Aug 29, 2016
  53. Jakub NarębskiAug 31, 2016
  54. Johannes SchindelinSep 1, 2016
  55. Jakub NarębskiSep 1, 2016
  56. Johannes SchindelinSep 9, 2016
  57. 13/22 sequencer: remember the onelines when parsing the todo fileJohannes Schindelin, Aug 29, 2016
  58. Jakub NarębskiAug 31, 2016
  59. Junio C HamanoAug 31, 2016
  60. Jakub NarębskiAug 31, 2016
  61. Junio C HamanoAug 31, 2016
  62. Johannes SchindelinSep 1, 2016
  63. Johannes SchindelinSep 1, 2016
  64. Jakub NarębskiSep 1, 2016
  65. Johannes SchindelinSep 1, 2016
  66. Junio C HamanoSep 1, 2016
  67. Johannes SchindelinSep 9, 2016
  68. Jakub NarębskiSep 9, 2016
  69. Git garden shears, was Re: [PATCH 13/22] sequencer: remember the onelines when parsing the todo fileJohannes Schindelin, Sep 11, 2016
  70. Jakub NarębskiSep 21, 2016
  71. Johannes SchindelinSep 25, 2016
  72. Jakub NarębskiSep 1, 2016
  73. Junio C HamanoSep 1, 2016
  74. Johannes SchindelinSep 9, 2016
  75. Johannes SchindelinSep 1, 2016
  76. 14/22 sequencer: prepare for rebase -i's commit functionalityJohannes Schindelin, Aug 29, 2016
  77. Junio C HamanoAug 29, 2016
  78. Johannes SchindelinAug 30, 2016
  79. Junio C HamanoAug 30, 2016
  80. Johannes SchindelinAug 30, 2016
  81. Junio C HamanoAug 30, 2016
  82. Johannes SchindelinAug 31, 2016
  83. 16/22 sequencer: prepare for rebase -i's GPG settingsJohannes Schindelin, Aug 29, 2016
  84. Jakub NarębskiAug 31, 2016
  85. Junio C HamanoAug 31, 2016
  86. Jakub NarębskiAug 31, 2016
  87. Junio C HamanoAug 31, 2016
  88. Johannes SchindelinSep 1, 2016
  89. Johannes SchindelinSep 1, 2016
  90. Johannes SchindelinSep 1, 2016
  91. Jakub NarębskiSep 1, 2016
  92. 15/22 sequencer: introduce a helper to read files written by scriptsJohannes Schindelin, Aug 29, 2016
  93. Dennis KaarsemakerAug 29, 2016
  94. Johannes SchindelinAug 29, 2016
  95. 17/22 sequencer: allow editing the commit message on a case-by-case basisJohannes Schindelin, Aug 29, 2016
  96. Jakub NarębskiAug 31, 2016
  97. Johannes SchindelinSep 1, 2016
  98. 18/22 sequencer: support amending commitsJohannes Schindelin, Aug 29, 2016
  99. Jakub NarębskiAug 31, 2016
  100. Johannes SchindelinSep 1, 2016
  101. 19/22 sequencer: support cleaning up commit messagesJohannes Schindelin, Aug 29, 2016
  102. Jakub NarębskiSep 1, 2016
  103. Johannes SchindelinSep 1, 2016
  104. Jakub NarębskiSep 1, 2016
  105. 20/22 sequencer: remember do_recursive_merge()'s return valueJohannes Schindelin, Aug 29, 2016
  106. Dennis KaarsemakerAug 29, 2016
  107. Johannes SchindelinAug 29, 2016
  108. Jakub NarębskiAug 29, 2016
  109. Junio C HamanoAug 29, 2016
  110. 12/22 sequencer: refactor the code to obtain a short commit nameJohannes Schindelin, Aug 29, 2016
  111. Dennis KaarsemakerAug 29, 2016
  112. Johannes SchindelinAug 29, 2016
  113. 22/22 sequencer: refactor write_message()Johannes Schindelin, Aug 29, 2016
  114. Jakub NarębskiSep 1, 2016
  115. Johannes SchindelinSep 1, 2016
  116. Jakub NarębskiSep 1, 2016
  117. Johannes SchindelinSep 9, 2016
  118. Jakub NarębskiSep 9, 2016
  119. Johannes SchindelinSep 11, 2016
  120. 21/22 sequencer: left-trim the lines read from the scriptJohannes Schindelin, Aug 29, 2016
  121. Jakub NarębskiSep 1, 2016
  122. Johannes SchindelinSep 1, 2016
  123. Junio C HamanoSep 1, 2016
  124. Johannes SchindelinSep 9, 2016
  125. Jakub NarębskiSep 1, 2016
  126. Johannes SchindelinSep 9, 2016
  127. 11/22 sequencer: get rid of the subcommand fieldJohannes Schindelin, Aug 29, 2016
  128. Jakub NarębskiAug 31, 2016
  129. Johannes SchindelinSep 1, 2016
  130. Dennis KaarsemakerAug 29, 2016
  131. Johannes SchindelinAug 29, 2016
  132. Jakub NarębskiSep 2, 2016
  133. Johannes SchindelinSep 2, 2016
  134. 00/25 Prepare the sequencer for the upcoming rebase -i patchesJohannes Schindelin, Sep 11, 2016
  135. 01/25 sequencer: use static initializers for replay_optsJohannes Schindelin, Sep 11, 2016
  136. Junio C HamanoSep 12, 2016
  137. 02/25 sequencer: use memoized sequencer directory pathJohannes Schindelin, Sep 11, 2016
  138. Junio C HamanoSep 12, 2016
  139. 03/25 sequencer: avoid unnecessary indirectionJohannes Schindelin, Sep 11, 2016
  140. Junio C HamanoSep 12, 2016
  141. 05/25 sequencer: allow the sequencer to take custody of malloc()ed dataJohannes Schindelin, Sep 11, 2016
  142. Junio C HamanoSep 12, 2016
  143. Johannes SchindelinOct 5, 2016
  144. Junio C HamanoOct 6, 2016
  145. Jakub NarębskiOct 6, 2016
  146. Junio C HamanoOct 6, 2016
  147. Johannes SchindelinOct 8, 2016
  148. 04/25 sequencer: future-proof remove_sequencer_state()Johannes Schindelin, Sep 11, 2016
  149. Junio C HamanoSep 12, 2016
  150. Johannes SchindelinOct 5, 2016
  151. Junio C HamanoOct 5, 2016
  152. 06/25 sequencer: release memory that was allocated when reading optionsJohannes Schindelin, Sep 11, 2016
  153. 07/25 sequencer: future-proof read_populate_todo()Johannes Schindelin, Sep 11, 2016
  154. 08/25 sequencer: completely revamp the "todo" script parsingJohannes Schindelin, Sep 11, 2016
  155. 09/25 sequencer: avoid completely different messages for different actionsJohannes Schindelin, Sep 11, 2016
  156. 10/25 sequencer: get rid of the subcommand fieldJohannes Schindelin, Sep 11, 2016
  157. Junio C HamanoSep 15, 2016
  158. 11/25 sequencer: refactor the code to obtain a short commit nameJohannes Schindelin, Sep 11, 2016
  159. 12/25 sequencer: remember the onelines when parsing the todo fileJohannes Schindelin, Sep 11, 2016
  160. 13/25 sequencer: prepare for rebase -i's commit functionalityJohannes Schindelin, Sep 11, 2016
  161. 14/25 sequencer: introduce a helper to read files written by scriptsJohannes Schindelin, Sep 11, 2016
  162. 15/25 sequencer: prepare for rebase -i's GPG settingsJohannes Schindelin, Sep 11, 2016
  163. 16/25 sequencer: allow editing the commit message on a case-by-case basisJohannes Schindelin, Sep 11, 2016
  164. 17/25 sequencer: support amending commitsJohannes Schindelin, Sep 11, 2016
  165. Junio C HamanoSep 12, 2016
  166. Johannes SchindelinOct 5, 2016
  167. 18/25 sequencer: support cleaning up commit messagesJohannes Schindelin, Sep 11, 2016
  168. Junio C HamanoSep 12, 2016
  169. 19/25 sequencer: remember do_recursive_merge()'s return valueJohannes Schindelin, Sep 11, 2016
  170. Junio C HamanoSep 12, 2016
  171. Johannes SchindelinOct 5, 2016
  172. Junio C HamanoOct 5, 2016
  173. 20/25 sequencer: left-trim lines read from the scriptJohannes Schindelin, Sep 11, 2016
  174. Junio C HamanoSep 11, 2016
  175. Johannes SchindelinSep 12, 2016
  176. Junio C HamanoSep 12, 2016
  177. Johannes SchindelinOct 6, 2016
  178. Johannes SixtOct 6, 2016
  179. Junio C HamanoOct 6, 2016
  180. Johannes SchindelinOct 9, 2016
  181. Johannes SixtOct 9, 2016
  182. 21/25 sequencer: refactor write_message()Johannes Schindelin, Sep 11, 2016
  183. Junio C HamanoSep 11, 2016
  184. Johannes SixtSep 12, 2016
  185. Junio C HamanoSep 15, 2016
  186. Johannes SchindelinOct 5, 2016
  187. 22/25 sequencer: remove overzealous assumption in rebase -i modeJohannes Schindelin, Sep 11, 2016
  188. Junio C HamanoSep 11, 2016
  189. 23/25 sequencer: mark action_name() for translationJohannes Schindelin, Sep 11, 2016
  190. 24/25 sequencer: quote filenames in error messagesJohannes Schindelin, Sep 11, 2016
  191. Junio C HamanoSep 11, 2016
  192. Johannes SchindelinOct 6, 2016
  193. 25/25 sequencer: remove bogus hint for translatorsJohannes Schindelin, Sep 11, 2016
  194. Junio C HamanoSep 11, 2016
  195. Johannes SchindelinOct 6, 2016
  196. 00/25 Prepare the sequencer for the upcoming rebase -i patchesJohannes Schindelin, Oct 10, 2016
  197. 01/25 sequencer: use static initializers for replay_optsJohannes Schindelin, Oct 10, 2016
  198. Junio C HamanoOct 10, 2016
  199. 02/25 sequencer: use memoized sequencer directory pathJohannes Schindelin, Oct 10, 2016
  200. 04/25 sequencer: future-proof remove_sequencer_state()Johannes Schindelin, Oct 10, 2016
  201. 03/25 sequencer: avoid unnecessary indirectionJohannes Schindelin, Oct 10, 2016
  202. Junio C HamanoOct 10, 2016
  203. 05/25 sequencer: eventually release memory allocated for the option valuesJohannes Schindelin, Oct 10, 2016
  204. Junio C HamanoOct 10, 2016
  205. Johannes SchindelinOct 11, 2016
  206. Junio C HamanoOct 11, 2016
  207. Johannes SchindelinOct 12, 2016
  208. Re* [PATCH v3 05/25] sequencer: eventually release memory allocated for the option valuesJunio C Hamano, Oct 12, 2016
  209. Johannes SchindelinOct 13, 2016
  210. 07/25 sequencer: completely revamp the "todo" script parsingJohannes Schindelin, Oct 10, 2016
  211. Junio C HamanoOct 10, 2016
  212. Johannes SchindelinOct 11, 2016
  213. Johannes SchindelinOct 11, 2016
  214. Johannes SchindelinOct 11, 2016
  215. Junio C HamanoOct 11, 2016
  216. Junio C HamanoOct 11, 2016
  217. Torsten BögershausenOct 15, 2016
  218. Jeff KingOct 15, 2016
  219. Torsten BögershausenOct 15, 2016
  220. Jeff KingOct 15, 2016
  221. Johannes SchindelinOct 16, 2016
  222. Jeff KingOct 16, 2016
  223. Johannes SchindelinOct 17, 2016
  224. Jeff KingOct 17, 2016
  225. 06/25 sequencer: future-proof read_populate_todo()Johannes Schindelin, Oct 10, 2016
  226. 08/25 sequencer: strip CR from the todo scriptJohannes Schindelin, Oct 10, 2016
  227. Junio C HamanoOct 11, 2016
  228. Johannes SchindelinOct 12, 2016
  229. 11/25 sequencer: refactor the code to obtain a short commit nameJohannes Schindelin, Oct 10, 2016
  230. 09/25 sequencer: avoid completely different messages for different actionsJohannes Schindelin, Oct 10, 2016
  231. 12/25 sequencer: remember the onelines when parsing the todo fileJohannes Schindelin, Oct 10, 2016
  232. Junio C HamanoOct 11, 2016
  233. Johannes SchindelinOct 12, 2016
  234. Junio C HamanoOct 12, 2016
  235. Johannes SchindelinOct 13, 2016
  236. 14/25 sequencer: introduce a helper to read files written by scriptsJohannes Schindelin, Oct 10, 2016
  237. Junio C HamanoOct 17, 2016
  238. Johannes SchindelinOct 18, 2016
  239. Junio C HamanoOct 18, 2016
  240. Johannes SchindelinOct 20, 2016
  241. 13/25 sequencer: prepare for rebase -i's commit functionalityJohannes Schindelin, Oct 10, 2016
  242. Junio C HamanoOct 11, 2016
  243. Johannes SchindelinOct 12, 2016
  244. Junio C HamanoOct 12, 2016
  245. Johannes SchindelinOct 13, 2016
  246. Junio C HamanoOct 14, 2016
  247. 15/25 sequencer: allow editing the commit message on a case-by-case basisJohannes Schindelin, Oct 10, 2016
  248. Junio C HamanoOct 17, 2016
  249. 10/25 sequencer: get rid of the subcommand fieldJohannes Schindelin, Oct 10, 2016
  250. 17/25 sequencer: support cleaning up commit messagesJohannes Schindelin, Oct 10, 2016
  251. 18/25 sequencer: do not try to commit when there were merge conflictsJohannes Schindelin, Oct 10, 2016
  252. 16/25 sequencer: support amending commitsJohannes Schindelin, Oct 10, 2016
  253. Junio C HamanoOct 17, 2016
  254. Johannes SchindelinOct 18, 2016
  255. Junio C HamanoOct 18, 2016
  256. 19/25 sequencer: left-trim lines read from the scriptJohannes Schindelin, Oct 10, 2016
  257. 20/25 sequencer: refactor write_message()Johannes Schindelin, Oct 10, 2016
  258. 23/25 sequencer: quote filenames in error messagesJohannes Schindelin, Oct 10, 2016
  259. 24/25 sequencer: start error messages consistently with lower caseJohannes Schindelin, Oct 10, 2016
  260. 25/25 sequencer: mark all error messages for translationJohannes Schindelin, Oct 10, 2016
  261. Johannes SixtOct 12, 2016
  262. Junio C HamanoOct 12, 2016
  263. Johannes SchindelinOct 13, 2016
  264. Johannes SixtOct 13, 2016
  265. 22/25 sequencer: mark action_name() for translationJohannes Schindelin, Oct 10, 2016
  266. 21/25 sequencer: remove overzealous assumption in rebase -i modeJohannes Schindelin, Oct 10, 2016
  267. 00/25 Prepare the sequencer for the upcoming rebase -i patchesJohannes Schindelin, Oct 14, 2016
  268. 18/25 sequencer: do not try to commit when there were merge conflictsJohannes Schindelin, Oct 14, 2016
  269. Junio C HamanoOct 20, 2016
  270. Johannes SchindelinOct 21, 2016
  271. 17/25 sequencer: support cleaning up commit messagesJohannes Schindelin, Oct 14, 2016
  272. Junio C HamanoOct 20, 2016
  273. 16/25 sequencer: support amending commitsJohannes Schindelin, Oct 14, 2016
  274. 19/25 sequencer: left-trim lines read from the scriptJohannes Schindelin, Oct 14, 2016
  275. 14/25 sequencer: introduce a helper to read files written by scriptsJohannes Schindelin, Oct 14, 2016
  276. 12/25 sequencer: remember the onelines when parsing the todo fileJohannes Schindelin, Oct 14, 2016
  277. 15/25 sequencer: allow editing the commit message on a case-by-case basisJohannes Schindelin, Oct 14, 2016
  278. 11/25 sequencer: get rid of the subcommand fieldJohannes Schindelin, Oct 14, 2016
  279. 13/25 sequencer: prepare for rebase -i's commit functionalityJohannes Schindelin, Oct 14, 2016
  280. 20/25 sequencer: refactor write_message()Johannes Schindelin, Oct 14, 2016
  281. Junio C HamanoOct 20, 2016
  282. Junio C HamanoOct 20, 2016
  283. Johannes SchindelinOct 21, 2016
  284. Junio C HamanoOct 21, 2016
  285. Johannes SchindelinOct 23, 2016
  286. 24/25 sequencer: start error messages consistently with lower caseJohannes Schindelin, Oct 14, 2016
  287. 22/25 sequencer: mark action_name() for translationJohannes Schindelin, Oct 14, 2016
  288. 25/25 sequencer: mark all error messages for translationJohannes Schindelin, Oct 14, 2016
  289. 23/25 sequencer: quote filenames in error messagesJohannes Schindelin, Oct 14, 2016
  290. Junio C HamanoOct 20, 2016
  291. Junio C HamanoOct 20, 2016
  292. 21/25 sequencer: remove overzealous assumption in rebase -i modeJohannes Schindelin, Oct 14, 2016
  293. 08/25 sequencer: completely revamp the "todo" script parsingJohannes Schindelin, Oct 14, 2016
  294. Junio C HamanoOct 17, 2016
  295. Johannes SchindelinOct 18, 2016
  296. 09/25 sequencer: strip CR from the todo scriptJohannes Schindelin, Oct 14, 2016
  297. 03/25 sequencer: avoid unnecessary indirectionJohannes Schindelin, Oct 14, 2016
  298. 05/25 sequencer: eventually release memory allocated for the option valuesJohannes Schindelin, Oct 14, 2016
  299. Junio C HamanoOct 17, 2016
  300. Johannes SchindelinOct 18, 2016
  301. Junio C HamanoOct 19, 2016
  302. Johannes SchindelinOct 20, 2016
  303. 04/25 sequencer: future-proof remove_sequencer_state()Johannes Schindelin, Oct 14, 2016
  304. 07/25 sequencer: refactor the code to obtain a short commit nameJohannes Schindelin, Oct 14, 2016
  305. 02/25 sequencer: use memoized sequencer directory pathJohannes Schindelin, Oct 14, 2016
  306. 10/25 sequencer: avoid completely different messages for different actionsJohannes Schindelin, Oct 14, 2016
  307. 06/25 sequencer: future-proof read_populate_todo()Johannes Schindelin, Oct 14, 2016
  308. 01/25 sequencer: use static initializers for replay_optsJohannes Schindelin, Oct 14, 2016
  309. Junio C HamanoOct 17, 2016
  310. 00/27 Prepare the sequencer for the upcoming rebase -i patchesJohannes Schindelin, Oct 21, 2016
  311. 02/27 sequencer: use memoized sequencer directory pathJohannes Schindelin, Oct 21, 2016
  312. 01/27 sequencer: use static initializers for replay_optsJohannes Schindelin, Oct 21, 2016
  313. 04/27 sequencer: future-proof remove_sequencer_state()Johannes Schindelin, Oct 21, 2016
  314. 03/27 sequencer: avoid unnecessary indirectionJohannes Schindelin, Oct 21, 2016
  315. 05/27 sequencer: plug memory leaks for the option valuesJohannes Schindelin, Oct 21, 2016
  316. 06/27 sequencer: future-proof read_populate_todo()Johannes Schindelin, Oct 21, 2016
  317. 08/27 sequencer: completely revamp the "todo" script parsingJohannes Schindelin, Oct 21, 2016
  318. Lars SchneiderNov 6, 2016
  319. 09/27 sequencer: strip CR from the todo scriptJohannes Schindelin, Oct 21, 2016
  320. 07/27 sequencer: refactor the code to obtain a short commit nameJohannes Schindelin, Oct 21, 2016
  321. 11/27 sequencer: get rid of the subcommand fieldJohannes Schindelin, Oct 21, 2016
  322. 12/27 sequencer: remember the onelines when parsing the todo fileJohannes Schindelin, Oct 21, 2016
  323. 13/27 sequencer: prepare for rebase -i's commit functionalityJohannes Schindelin, Oct 21, 2016
  324. 10/27 sequencer: avoid completely different messages for different actionsJohannes Schindelin, Oct 21, 2016
  325. 15/27 sequencer: allow editing the commit message on a case-by-case basisJohannes Schindelin, Oct 21, 2016
  326. 14/27 sequencer: introduce a helper to read files written by scriptsJohannes Schindelin, Oct 21, 2016
  327. 16/27 sequencer: support amending commitsJohannes Schindelin, Oct 21, 2016
  328. 17/27 sequencer: support cleaning up commit messagesJohannes Schindelin, Oct 21, 2016
  329. 18/27 sequencer: left-trim lines read from the scriptJohannes Schindelin, Oct 21, 2016
  330. 21/27 sequencer: refactor write_message() to take a pointer/lengthJohannes Schindelin, Oct 21, 2016
  331. 19/27 sequencer: stop releasing the strbuf in write_message()Johannes Schindelin, Oct 21, 2016
  332. Junio C HamanoOct 21, 2016
  333. 23/27 sequencer: remove overzealous assumption in rebase -i modeJohannes Schindelin, Oct 21, 2016
  334. 25/27 sequencer: quote filenames in error messagesJohannes Schindelin, Oct 21, 2016
  335. 22/27 sequencer: teach write_message() to append an optional LFJohannes Schindelin, Oct 21, 2016
  336. Junio C HamanoOct 21, 2016
  337. Johannes SchindelinOct 23, 2016
  338. 26/27 sequencer: start error messages consistently with lower caseJohannes Schindelin, Oct 21, 2016
  339. 20/27 sequencer: roll back lock file if write_message() failedJohannes Schindelin, Oct 21, 2016
  340. 24/27 sequencer: mark action_name() for translationJohannes Schindelin, Oct 21, 2016
  341. 27/27 sequencer: mark all error messages for translationJohannes Schindelin, Oct 21, 2016
  342. Junio C HamanoOct 21, 2016
  343. Johannes SchindelinOct 23, 2016
  344. Junio C HamanoOct 24, 2016
  345. Junio C HamanoOct 22, 2016
  346. Johannes SchindelinOct 23, 2016
  347. Johannes SchindelinOct 23, 2016
  348. Max HornOct 24, 2016
  349. Johannes SchindelinOct 24, 2016
  350. Junio C HamanoOct 24, 2016
  351. Stefan BellerOct 24, 2016
  352. Junio C HamanoOct 24, 2016

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.