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

Re: Train station analogy, was Re: [PATCH v3 00/15] [RFC] Upstreaming the Scalar command

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Sep 15, 2021, 17:51 UTC
Message-ID
<87k0jhn0p9.fsf@evledraar.gmail.com>
In-Reply-To
<5ae0c3fe-52a4-49b2-32c2-17feab2dd2d5@gmail.com>
On Tue, Sep 14 2021, Derrick Stolee wrote:
Show 24 quoted lines
> On 9/14/2021 2:09 PM, Ævar Arnfjörð Bjarmason wrote:
>> 
>> On Tue, Sep 14 2021, Junio C Hamano wrote:
>> 
>>> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>>>
>>> At least to me, how this Makefile for Scalar should interact with
>>> the overall build process does not mesh well with the story about
>>> hwo direction to and history of the station are unrelated.  If we
>>> plan to start from contrib/ and eventually want to make it a part
>>> of the core Git (i.e. "git scalar <subcmd> ..." becomes just like
>>> "git bisect <subcmd> ..."), we would eventually need to see the
>>> recipe needed for including "bisect" and "scalar" work the same
>>> way, no?
>
> We should definitely work to find a better way to describe our
> vision for how _the ideas in Scalar_ can be adopted into Git proper.
>
> Before this series, we were adding functionality to Git that allowed
> Scalar to simplify to just a CLI that configures Git features. This
> submission allows that CLI to be available via an opt-in compile flag.
> This should allow more users to try out the ideas and perhaps we find
> the things that really work for people (and almost more importantly,
> the ideas that are _too_ opinionated).

Yeah that makes sense. I think it looks like a useful command & it's already useful to users.

I haven't been suggesting any changes to what gets installed here, FWIW I think we could be even more aggressive on that front, e.g. shipping it unconditionally in libexec, maybe with an optional switch for /usr/bin/scalar, or to ship "scalar" symlinked to "git" and have it route to the top-level scalar command depending on argv.

I dabbled in that a bit locally, FWIW it seems if anything even easier to do than the approaches we've discussed so far, but I wanted to focus on providing the same behavior in terms of build system maintenance.

Show 6 quoted lines
> But the way I see Scalar being fully incorporated into Git is not as
> a "git scalar <foo>" command or even having "scalar" be included by
> default. Instead, perhaps a new builtin would need to be created and
> its CLI would need to be presented and reviewed with significant
> attention to long-term support in the Git project. Having Scalar as
> a testing ground for these ideas seems like a positive way forward.
*Nod*
> This is a big reason why we think that contrib/ is a good place for
> it to exist.

Here's where you and Johannes lose me. There's some rationale in your minds for why sticking it in contrib is the obvious way to go. So far you've been describing how it'll look to users etc, how it's arranged in our source tree only matters to git.git developers.

I think the actual reason is to carve in advance some subjective ownership/apartness or whatever for this thing, if that's the case I think documentation/commit messages would also work.

I really don't care much if something lives in contrib or not in the abstract, but various integration around builds in Makefile makes that much easier in practice, and if "make install" looks the same...

Show 7 quoted lines
>>> I am getting the impression that such a unified build process is
>>> Ævar wants to see at the end, I am not even sure if you do from
>>> the above "analogy".  Cool down a bit, perhaps?
>
> I agree that the temperature of this thread has gotten a bit
> heated. I think there is something valuable to be gained from
> each perspective, but not in a way that either has presented it.

Thanks, hopefully we can keep it jovial going forward. If you've got any (either on-list or off-list) feedback about how I can improve my side of that it would be most welcome.

Show 34 quoted lines
>>> The following assumes that you share the goal of making "git
>>> scalar" just like "git bisect"---another first class citizen of
>>> Git toolbox, the user can choose to use it or the user may not
>>> have a need to interact with it, but it exists there by default
>>> and is not an opt-in add-on component.
>>>
>>> I would understand it if your plan is to convert to a unified
>>> build procedure at the very end of the upstreaming process, and
>>> not while you populate contrib/ with more and more scalar stuff,
>>> because the Makefile bits for the entire scalar, while not yet
>>> upstreamed, has already been written as a separate procedure and
>>> having to convert the whole thing upfront before you can start
>>> trickle parts would mean you need to (re)start the process.  And
>>> I would even be sympathetic if you felt it like a distraction.
>>>
>>> But at least I view it as a step that needs to happen sometime
>>> between now and at the end.  I do not yet have an opinion on
>>> which one is more pleasant, between (1) having to deal with a
>>> single Makefile that needs to be aware of two different locations
>>> *.[ch] lives in, and (2) having to deal with two Makefiles that
>>> duplicates definitions and risks them needlessly diverging.
>
> Since we already need to modify the root Makefile, I think having
> the root Makefile add the files from contrib/scalar from an
> optional flag is a great way to reduce duplication across multiple
> Makefiles while also maintaining the Scalar is compiled optionally.
>
> One big goal is to minimize how often we need to update Scalar. I
> can see things like adjusting the recommended config once per
> release cycle based on which new features are available. I don't
> really want to be spending time updating the Makefile to match a
> contribution that was already carefully reviewed and tested. I
> also don't want to put the burden of updating contrib/scalar upon
> those contributors.

I'd think not having large parts of t/Makefile & Makefile should ease that maintenance burden for you & others.

Show 17 quoted lines
>> For what it's worth what I had on top of this is not (1) or (2), but a
>> (0): I.e. there isn't a contrib/scalar anymore, I moved:
>> 
>>     contrib/scalar/scalar.c -> scalar>     contrib/scalar/scalar.txt -> Documentation/scalar.txt
>>     contrib/scalar/t9099-scalar.sh -> t/t9099-scalar.sh
>> 
>> We build, test, and otherwise check (e.g. "make check-docs") it by
>> default, what we don't do is install it unless you ask. You need to run:
>> 
>>     # Or any other install* target
>>     make install install-doc INSTALL_SCALAR=YesPlease
>> 
>> It could be be kept in contrib/scalar/ even with that sort of approach,
>> and it would still be simpler than the two-Makefile approach.
>
> I think keeping it in contrib/scalar is best for now. But I do
> agree that a single Makefile has benefits.
I noted the "why contrib" above.
Show 16 quoted lines
> One early suggestion from a while back was to modify git.c to
> handle the "scalar" executable as well as the "git" executable,
> specifically to reduce duplication handling options such as
>
>   -c config.key=value
>   -C worktree
>   --exec-path
>
> and similar commands. While our duplication of the "-c" option
> does add similar code in a second place, these other options
> are less critical for Scalar, especially in its current version.
> I think refactoring the code in git.c to cater to the "scalar"
> executable is at least premature. If we want to pursue these
> other options in the future, then that refactoring could happen
> as a separate discussion after the rest of the build system and
> CLI have been figured out.

As noted above that seems like a sensible way forward, I hadn't noticed how much of git.c's setup was copied into scalar.c.

It seems to me that it wouldn't be that hard, on the order of the existing setup code or less. I.e. just make "git.c" learn that it may be running some arbitrary command name, and do some options parsing, but and finally dispatch to a cmd_scalar(). IOW mostly like a built-in.

Show 23 quoted lines
> _Perhaps_ Johannes still had that level of integration in his
> head when responding to the single-Makefile recommendations.
>
>> But just moving the code, tests and documentation where everything else
>> lives cuts down an all sorts of special cases, file globs in various
>> places (e.g. doc lints) will just work and won't need adjustment.
>> 
>>> I also would understand it if the reason why you want to keep the
>>> top-level Makefile as intact as possible because you sense a high
>>> probability that scalar will stay in contrib/ and even turn out
>>> to be a failure.  Keeping the build procedure separated certainly
>>> will keep it easier to yank it out later.  But I do not think
>>> such a case is quite likely.
>> 
>> For what it's worth the WIP patch(es) I have on top of it will probably
>> make such a thing even easier, not that removing it from the tree would
>> be much of a problem in either case. It's mostly a few lines added to
>> lists in various places in the Makfile.
>
> Do you have a version of these patches available for adaptation
> into this series? I'd like to take a look and see what it would
> look like to squash them into this series. Forgive me if I just
> missed the link. (I see the diff you posted earlier in this thread.)

I've got it at https://github.com/avar/git/tree/avar-dscho/scalar-the-beginning-normalize-Makefile

Not very ML-ready, and soft-depends on some other Makefile cleanups I thought I'd do & still haven't untangled and submitted. Soft-depends as in this can easily be done on master, but some of the variable names etc. are quite confusing there.

But you should be able to check it out, it'll build, test and install if you run "install" with "INSTALL_SCALAR=Y".

You may run into on everly eager new (but unrelated to this, I just merged it on top) Makefile assertion I'm experimenting with, just comment out the relevant line in the Makefile if that happens, i.e. something like this error:

    Makefile:3608: *** "please sort and de-duplicate BUILT_INS_EXTRA!".  Stop.
Show 43 quoted lines
>> If I were to clean this up properly most of the changes would be
>> teaching the Makefile that it can build N number of named top-level
>> "special" commands that get dropped into bin/, not just the "git" we
>> hardcode now.
>
> This is an interesting idea for revamping how adjacent tools are
> compiled and shipped with Git from contrib/ (or possibly elsewhere
> if we decided to start including more things as "blessed helpers".
>
> As a complete aside: I'm interested in using the sparse-checkout
> feature as I work on the Git codebase, just to make sure I hit
> pain points before any other user.
>
> This is the best that I could do for my purposes:
>
> $ git sparse-checkout list
> .github
> Documentation
> builtin
> compat
> contrib/scalar
> ewah
> git-gui
> gitk-git
> gitk-gui
> gitweb
> mergetools
> negotiator
> perl
> po
> refs
> sha1dc
> sha256
> t
> templates
> trace2
> xdiff
>
> And 'git status' reports that this includes 97% of the tracked
> files. Perhaps there are ways to make this be smaller by having
> make skip building things like git-gui if the directory doesn't
> exist. Another idea would be to skip any logic around translating
> messages if the 'po' directory is missing.
For git-gui in particular NO_TCLTK=Y should do it.
Show 6 quoted lines
> The reason I bring this up is that I'm interested in finding
> ways to make our build system be streamlined a bit using the
> presence of directories as a way to opt in/out of certain build
> outputs. Since Scalar is being added as a new component, this is
> a good opportunity to establish a pattern that works for this
> effort, too.

Sure, the hard part isn't that you can't grep out nonexisting files or directories when building where we now use a glob.

It's that everything downstream of that, i.e. tests, installation etc. is going to have to work properly in the face of arbitrary parts of what the developer who tested the code expected going missing.

Which is why we've generally carved out very specific things, usually along the boundaries of installed dependencies.

Previous: Theodore Ts'oNext: Junio C Hamano
Message 104 of 303 in “[RFC] Upstreaming the Scalar command”
  1. 00/15 [RFC] Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Aug 30, 2021
  2. 01/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Aug 30, 2021
  3. 02/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Aug 30, 2021
  4. 03/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Aug 30, 2021
  5. Ævar Arnfjörð BjarmasonAug 31, 2021
  6. 04/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Aug 30, 2021
  7. Ævar Arnfjörð BjarmasonAug 31, 2021
  8. Derrick StoleeAug 31, 2021
  9. Junio C HamanoSep 1, 2021
  10. Johannes SchindelinSep 3, 2021
  11. Junio C HamanoSep 3, 2021
  12. 05/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Aug 30, 2021
  13. 07/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Aug 30, 2021
  14. 06/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Aug 30, 2021
  15. 08/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Aug 30, 2021
  16. Ævar Arnfjörð BjarmasonAug 31, 2021
  17. Eric SunshineAug 31, 2021
  18. Johannes SchindelinSep 3, 2021
  19. Junio C HamanoSep 1, 2021
  20. Derrick StoleeSep 3, 2021
  21. Junio C HamanoSep 3, 2021
  22. Johannes SchindelinSep 3, 2021
  23. Junio C HamanoSep 3, 2021
  24. Johannes SchindelinSep 8, 2021
  25. Ævar Arnfjörð BjarmasonSep 9, 2021
  26. Elijah NewrenSep 28, 2021
  27. Johannes SchindelinOct 6, 2021
  28. Elijah NewrenOct 7, 2021
  29. 09/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Aug 30, 2021
  30. 10/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Aug 30, 2021
  31. Ævar Arnfjörð BjarmasonAug 31, 2021
  32. Johannes SchindelinSep 3, 2021
  33. Junio C HamanoSep 3, 2021
  34. Johannes SchindelinSep 8, 2021
  35. 11/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Aug 30, 2021
  36. Ævar Arnfjörð BjarmasonAug 31, 2021
  37. Johannes SchindelinSep 3, 2021
  38. Ævar Arnfjörð BjarmasonSep 6, 2021
  39. 12/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Aug 30, 2021
  40. Eric SunshineAug 31, 2021
  41. Johannes SchindelinSep 3, 2021
  42. Eric SunshineSep 3, 2021
  43. Johannes SchindelinSep 8, 2021
  44. 13/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Aug 30, 2021
  45. 15/15 scalar: accept -C and -c options before the subcommandJohannes Schindelin via GitGitGadget, Aug 30, 2021
  46. Ævar Arnfjörð BjarmasonAug 31, 2021
  47. Derrick StoleeAug 31, 2021
  48. Ævar Arnfjörð BjarmasonAug 31, 2021
  49. 14/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Aug 30, 2021
  50. Eric SunshineAug 31, 2021
  51. Johannes SchindelinSep 3, 2021
  52. Derrick StoleeAug 31, 2021
  53. Elijah NewrenSep 1, 2021
  54. 00/15 [RFC] Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Sep 3, 2021
  55. 01/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Sep 3, 2021
  56. Ævar Arnfjörð BjarmasonSep 14, 2021
  57. 03/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Sep 3, 2021
  58. 02/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Sep 3, 2021
  59. 04/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Sep 3, 2021
  60. 05/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Sep 3, 2021
  61. 06/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Sep 3, 2021
  62. 07/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Sep 3, 2021
  63. Bagas SanjayaSep 4, 2021
  64. Johannes SchindelinSep 8, 2021
  65. 08/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Sep 3, 2021
  66. Ævar Arnfjörð BjarmasonSep 6, 2021
  67. Johannes SchindelinSep 8, 2021
  68. 09/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Sep 3, 2021
  69. 10/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Sep 3, 2021
  70. 12/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Sep 3, 2021
  71. 13/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Sep 3, 2021
  72. 11/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Sep 3, 2021
  73. 14/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Sep 3, 2021
  74. 15/15 scalar: accept -C and -c options before the subcommandJohannes Schindelin via GitGitGadget, Sep 3, 2021
  75. Ævar Arnfjörð BjarmasonSep 6, 2021
  76. 00/15 [RFC] Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Sep 8, 2021
  77. 01/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Sep 8, 2021
  78. Elijah NewrenSep 9, 2021
  79. Johannes SchindelinSep 13, 2021
  80. 02/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Sep 8, 2021
  81. 03/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Sep 8, 2021
  82. 04/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Sep 8, 2021
  83. 05/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Sep 8, 2021
  84. 06/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Sep 8, 2021
  85. 07/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Sep 8, 2021
  86. Bagas SanjayaSep 9, 2021
  87. 08/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Sep 8, 2021
  88. 09/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Sep 8, 2021
  89. 10/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Sep 8, 2021
  90. 11/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Sep 8, 2021
  91. 12/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Sep 8, 2021
  92. 13/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Sep 8, 2021
  93. 14/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Sep 8, 2021
  94. 15/15 scalar: accept -C and -c options before the subcommandJohannes Schindelin via GitGitGadget, Sep 8, 2021
  95. Ævar Arnfjörð BjarmasonSep 9, 2021
  96. Ævar Arnfjörð BjarmasonSep 13, 2021
  97. Johannes SchindelinSep 13, 2021
  98. Ævar Arnfjörð BjarmasonSep 14, 2021
  99. Train station analogy, was Re: [PATCH v3 00/15] [RFC] Upstreaming the Scalar commandJohannes Schindelin, Sep 14, 2021
  100. Junio C HamanoSep 14, 2021
  101. Ævar Arnfjörð BjarmasonSep 14, 2021
  102. Derrick StoleeSep 14, 2021
  103. Theodore Ts'oSep 14, 2021
  104. Ævar Arnfjörð BjarmasonSep 15, 2021
  105. Junio C HamanoSep 14, 2021
  106. Johannes SchindelinOct 6, 2021
  107. Junio C HamanoOct 6, 2021
  108. Johannes SchindelinOct 7, 2021
  109. Ævar Arnfjörð BjarmasonOct 7, 2021
  110. Ævar Arnfjörð BjarmasonSep 14, 2021
  111. 00/15 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Sep 14, 2021
  112. 01/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Sep 14, 2021
  113. Ævar Arnfjörð BjarmasonSep 24, 2021
  114. Junio C HamanoSep 24, 2021
  115. Ævar Arnfjörð BjarmasonSep 26, 2021
  116. Junio C HamanoSep 27, 2021
  117. 02/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Sep 14, 2021
  118. 03/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Sep 14, 2021
  119. 04/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Sep 14, 2021
  120. Elijah NewrenSep 28, 2021
  121. Ævar Arnfjörð BjarmasonSep 28, 2021
  122. Johannes SchindelinOct 6, 2021
  123. Elijah NewrenSep 28, 2021
  124. Johannes SchindelinOct 6, 2021
  125. 05/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Sep 14, 2021
  126. 06/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Sep 14, 2021
  127. 07/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Sep 14, 2021
  128. 08/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Sep 14, 2021
  129. 09/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Sep 14, 2021
  130. 11/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Sep 14, 2021
  131. Elijah NewrenSep 28, 2021
  132. Johannes SchindelinOct 6, 2021
  133. 10/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Sep 14, 2021
  134. 12/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Sep 14, 2021
  135. 13/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Sep 14, 2021
  136. Elijah NewrenSep 28, 2021
  137. 14/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Sep 14, 2021
  138. 15/15 scalar: accept -C and -c options before the subcommandJohannes Schindelin via GitGitGadget, Sep 14, 2021
  139. Johannes SchindelinSep 14, 2021
  140. Junio C HamanoSep 14, 2021
  141. 00/15 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Oct 7, 2021
  142. 01/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Oct 7, 2021
  143. 02/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Oct 7, 2021
  144. 03/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Oct 7, 2021
  145. 04/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Oct 7, 2021
  146. 05/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Oct 7, 2021
  147. 06/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Oct 7, 2021
  148. 07/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Oct 7, 2021
  149. 08/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Oct 7, 2021
  150. 10/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Oct 7, 2021
  151. 09/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Oct 7, 2021
  152. 11/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Oct 7, 2021
  153. 14/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Oct 7, 2021
  154. 12/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Oct 7, 2021
  155. 13/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Oct 7, 2021
  156. 15/15 scalar: accept -C and -c options before the subcommandJohannes Schindelin via GitGitGadget, Oct 7, 2021
  157. Ævar Arnfjörð BjarmasonOct 7, 2021
  158. 00/15 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Oct 27, 2021
  159. 01/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Oct 27, 2021
  160. 02/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Oct 27, 2021
  161. 03/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Oct 27, 2021
  162. 04/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Oct 27, 2021
  163. 05/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Oct 27, 2021
  164. 06/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Oct 27, 2021
  165. 07/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Oct 27, 2021
  166. 08/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Oct 27, 2021
  167. 09/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Oct 27, 2021
  168. 10/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Oct 27, 2021
  169. 11/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Oct 27, 2021
  170. 12/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Oct 27, 2021
  171. 13/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Oct 27, 2021
  172. 14/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Oct 27, 2021
  173. 15/15 scalar: accept -C and -c options before the subcommandJohannes Schindelin via GitGitGadget, Oct 27, 2021
  174. Derrick StoleeOct 27, 2021
  175. 00/17 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Nov 17, 2021
  176. 01/17 scalar: add a README with a roadmapJohannes Schindelin via GitGitGadget, Nov 17, 2021
  177. Derrick StoleeNov 17, 2021
  178. Johannes SchindelinNov 18, 2021
  179. 02/17 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Nov 17, 2021
  180. 03/17 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Nov 17, 2021
  181. 04/17 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Nov 17, 2021
  182. 05/17 cmake: optionally build `scalar`, tooJohannes Schindelin via GitGitGadget, Nov 17, 2021
  183. Matt RogersNov 17, 2021
  184. Johannes SchindelinNov 18, 2021
  185. 10/17 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Nov 17, 2021
  186. 11/17 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Nov 17, 2021
  187. 08/17 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Nov 17, 2021
  188. 09/17 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Nov 17, 2021
  189. 12/17 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Nov 17, 2021
  190. 14/17 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Nov 17, 2021
  191. 07/17 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Nov 17, 2021
  192. 16/17 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Nov 17, 2021
  193. 06/17 ci: also run the `scalar` testsJohannes Schindelin via GitGitGadget, Nov 17, 2021
  194. 17/17 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Nov 17, 2021
  195. 13/17 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Nov 17, 2021
  196. 15/17 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Nov 17, 2021
  197. Ævar Arnfjörð BjarmasonNov 18, 2021
  198. 00/17 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Nov 19, 2021
  199. 01/17 scalar: add a README with a roadmapJohannes Schindelin via GitGitGadget, Nov 19, 2021
  200. 02/17 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Nov 19, 2021
  201. 03/17 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Nov 19, 2021
  202. 04/17 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Nov 19, 2021
  203. Ævar Arnfjörð BjarmasonNov 30, 2021
  204. 05/17 cmake: optionally build `scalar`, tooJohannes Schindelin via GitGitGadget, Nov 19, 2021
  205. 06/17 ci: also run the `scalar` testsJohannes Schindelin via GitGitGadget, Nov 19, 2021
  206. 07/17 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Nov 19, 2021
  207. 08/17 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Nov 19, 2021
  208. 09/17 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Nov 19, 2021
  209. 10/17 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Nov 19, 2021
  210. 11/17 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Nov 19, 2021
  211. 12/17 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Nov 19, 2021
  212. 13/17 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Nov 19, 2021
  213. 14/17 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Nov 19, 2021
  214. 15/17 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Nov 19, 2021
  215. 16/17 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Nov 19, 2021
  216. 17/17 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Nov 19, 2021
  217. Elijah NewrenNov 20, 2021
  218. Johannes SchindelinNov 22, 2021
  219. Ævar Arnfjörð BjarmasonNov 22, 2021
  220. Johannes SchindelinNov 22, 2021
  221. Ævar Arnfjörð BjarmasonNov 22, 2021
  222. Johannes SchindelinNov 23, 2021
  223. Ævar Arnfjörð BjarmasonNov 23, 2021
  224. Johannes SchindelinNov 23, 2021
  225. 00/17 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Nov 30, 2021
  226. 02/17 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Nov 30, 2021
  227. 03/17 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Nov 30, 2021
  228. 01/17 scalar: add a README with a roadmapJohannes Schindelin via GitGitGadget, Nov 30, 2021
  229. 05/17 cmake: optionally build `scalar`, tooJohannes Schindelin via GitGitGadget, Nov 30, 2021
  230. 04/17 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Nov 30, 2021
  231. 06/17 ci: also run the `scalar` testsJohannes Schindelin via GitGitGadget, Nov 30, 2021
  232. 07/17 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Nov 30, 2021
  233. 08/17 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Nov 30, 2021
  234. 12/17 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Nov 30, 2021
  235. 11/17 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Nov 30, 2021
  236. 10/17 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Nov 30, 2021
  237. 15/17 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Nov 30, 2021
  238. 16/17 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Nov 30, 2021
  239. 17/17 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Nov 30, 2021
  240. 14/17 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Nov 30, 2021
  241. 13/17 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Nov 30, 2021
  242. 09/17 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Nov 30, 2021
  243. Ævar Arnfjörð BjarmasonNov 30, 2021
  244. Johannes SchindelinNov 30, 2021
  245. Ævar Arnfjörð BjarmasonNov 30, 2021
  246. Junio C HamanoDec 1, 2021
  247. Johannes SchindelinDec 2, 2021
  248. Junio C HamanoDec 2, 2021
  249. Elijah NewrenDec 2, 2021
  250. Junio C HamanoDec 2, 2021
  251. Johannes SchindelinDec 8, 2021
  252. Junio C HamanoDec 9, 2021
  253. 00/15 Upstreaming the Scalar commandJohannes Schindelin via GitGitGadget, Dec 3, 2021
  254. 01/15 scalar: add a README with a roadmapJohannes Schindelin via GitGitGadget, Dec 3, 2021
  255. 02/15 scalar: create a rudimentary executableJohannes Schindelin via GitGitGadget, Dec 3, 2021
  256. 03/15 scalar: start documenting the commandJohannes Schindelin via GitGitGadget, Dec 3, 2021
  257. 04/15 scalar: create test infrastructureJohannes Schindelin via GitGitGadget, Dec 3, 2021
  258. 05/15 scalar: 'register' sets recommended config and starts maintenanceDerrick Stolee via GitGitGadget, Dec 3, 2021
  259. 06/15 scalar: 'unregister' stops background maintenanceDerrick Stolee via GitGitGadget, Dec 3, 2021
  260. 09/15 scalar: implement the `clone` subcommandJohannes Schindelin via GitGitGadget, Dec 3, 2021
  261. 08/15 scalar: implement 'scalar list'Derrick Stolee via GitGitGadget, Dec 3, 2021
  262. 07/15 scalar: let 'unregister' handle a deleted enlistment directory gracefullyJohannes Schindelin via GitGitGadget, Dec 3, 2021
  263. 10/15 scalar: teach 'clone' to support the --single-branch optionJohannes Schindelin via GitGitGadget, Dec 3, 2021
  264. 11/15 scalar: implement the `run` commandDerrick Stolee via GitGitGadget, Dec 3, 2021
  265. 12/15 scalar: allow reconfiguring an existing enlistmentJohannes Schindelin via GitGitGadget, Dec 3, 2021
  266. 13/15 scalar: teach 'reconfigure' to optionally handle all registered enlistmentsJohannes Schindelin via GitGitGadget, Dec 3, 2021
  267. 14/15 scalar: implement the `delete` commandMatthew John Cheetham via GitGitGadget, Dec 3, 2021
  268. 15/15 scalar: implement the `version` commandJohannes Schindelin via GitGitGadget, Dec 3, 2021
  269. Elijah NewrenDec 3, 2021
  270. Junio C HamanoDec 5, 2021
  271. Ævar Arnfjörð BjarmasonDec 7, 2021
  272. Junio C HamanoDec 8, 2021
  273. Makefile: add test-all targetJunio C Hamano, Dec 8, 2021
  274. Derrick StoleeDec 8, 2021
  275. Junio C HamanoDec 8, 2021
  276. Jeff KingDec 8, 2021
  277. Junio C HamanoDec 8, 2021
  278. Junio C HamanoDec 9, 2021
  279. Jeff KingDec 10, 2021
  280. Junio C HamanoDec 13, 2021
  281. Ævar Arnfjörð BjarmasonDec 9, 2021
  282. Junio C HamanoDec 9, 2021
  283. Ævar Arnfjörð BjarmasonDec 10, 2021
  284. Jeff KingDec 10, 2021
  285. Ævar Arnfjörð BjarmasonDec 10, 2021
  286. Johannes SchindelinDec 10, 2021
  287. Elijah NewrenDec 10, 2021
  288. Junio C HamanoDec 13, 2021
  289. Johannes SchindelinDec 10, 2021
  290. Junio C HamanoDec 13, 2021
  291. Jeff KingDec 14, 2021
  292. Jeff KingDec 14, 2021
  293. Bagas SanjayaDec 11, 2021
  294. Johannes SchindelinDec 8, 2021
  295. Ævar Arnfjörð BjarmasonDec 8, 2021
  296. Derrick StoleeDec 8, 2021
  297. Elijah NewrenDec 8, 2021
  298. Junio C HamanoDec 9, 2021
  299. Johannes SchindelinDec 11, 2021
  300. Ævar Arnfjörð BjarmasonDec 11, 2021
  301. Elijah NewrenDec 11, 2021
  302. Johannes SchindelinDec 11, 2021
  303. Johannes SchindelinOct 6, 2021

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.