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

Re: [RFC/PATCH] tests: support testing with an arbitrary default branch (sort of)

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 18, 2020, 13:32 UTC
Message-ID
<87ima2rdsm.fsf@evledraar.gmail.com>
In-Reply-To
<nycvar.QRO.7.76.6.2011162118060.18437@tvgsbejvaqbjf.bet>
On Mon, Nov 16 2020, Johannes Schindelin wrote:
Show 59 quoted lines
> Hi Ævar,
>
> On Sat, 14 Nov 2020, Ævar Arnfjörð Bjarmason wrote:
>
>> On Fri, Nov 13 2020, Johannes Schindelin wrote:
>>
>> > Whatever telemetry I would be able to pull would not be representative,
>> > and I would not be at liberty to share it anyway. So I asked Alex Mullans
>> > of GitHub (who is in charge of the default branch name switch to `main`
>> > there) whether he has any data I could share publicly and he said: "Across
>> > GitHub, 1/4 of daily pushes (and growing) go to `main`."
>> >
>> > Seeing as the branch name to be used in newly-created repositories on
>> > GitHub changed only very recently (October 1st, i.e. some 6 weeks ago), I
>> > highly suspect that this number means that _a lot_ of existing projects
>> > have changed their primary branch name to `main`, and seem to be quite
>> > happy with it.
>> >
>> > All this is to say that I consider it unnecessary to have a long
>> > deprecation period or major version bump for this patch series, based on
>> > available public data. The name `main` is already in wide-spread use (and
>> > growing) as primary branch name of Git projects.
>>
>> [...]
>> I'm on the fence about what we should do in that case, but I'm leaning
>> towards some deprecation period or at least some other approach than a
>> s/master/main/g change precisely because of the numbers you're citing.
>>
>> Because they shows how irrelevant the default shipped with git.git is to
>> users who want this s/master/main/g change in repositories they
>> regularly use. So we're really mostly talking about an impact to scripts
>> & some advanced users, both of who have a pretty good argument for
>> "init"'s default being what's been explicitly documented for ages in its
>> manpage.
>
> I think you have a good point here. It really does not matter _all_ that
> much, yet I still would like to complete the switch to `main` at some
> stage. But as you point out, that point does not _have_ to be now.
>
> As a consequence, I reconsider my stance on "splitting off patch 28". I
> think I will send out a v2 tomorrow, including the fix you suggested for
> t1400 to also rename `naster` to `nain`, and dropping the patch that
> changes the fall-back for `init.defaultBranch` for now.
>
> I _do_ want to complete the transition to using
> `GIT_TEST_DEFAULT_INIT_BRANCH=main` to address the concern you raised
> elsewhere: a couple of test cases are skipped until that transition is
> complete.
>
> After I send out v2, I will work on that patch that imitates d18c950a69f
> (pull: warn if the user didn't say whether to rebase or to merge,
> 2020-03-09) to show some advice when `init.defaultBranch` is not set.
>
> My current thinking is that we could show this advice for about half a
> year and then make the switch to `main`, continuing to show the advice
> (now adjusted for `main`) for about another half year, and then turn the
> warning off.
>
> What do you think, does that sound too conservative of a plan?

The v2 looks good to me. I just had a suggestion in [1] to apply something on top to restore the test coverage until while whatever comes after it lands.

In case I didn't make it clear I have no objection entirely replacing "master" with "main" in the tests. I just had a practical concern/question about coverage while it was landing, and a suggestion of whether perhaps there was an easier/faster way to do the "init" change first by omitting some of the test churn.

But if you want to do all the legwork that's fine by me :)

I just thought that a sober estimation of how long it takes patches to land would mean the v1 would be in some in-between state for the next release.

FWIW I'm not necessarily for some warning. I mainly wanted to attempt to mediate some of the discussion about the concern to something more productive.

At the risk of repeating too much of my past overly long E-Mails, but if I'm being difficult for you when you're submitting patches & causing work for you I think I owe you an unambiguous explanation for why that is:

I think some of the people advocating this change can rightly look at some of the previous E-Mail traffic and see what are at best rants and at worst some political grandstanding that's at best pretty irrelevant to any proposed changes in git.git.

But that doesn't mean that there aren't some legitimate concerns. Those are in my mind separate from the particular political motivations of the s/master/main/ change, we'd have those with any change to the defaults in the core tooling.

I think in general with such changes that replies like Theodore Ts'o here [2] (not picking on him in particular, I just thought it was representative) reflect a rather insular view of how we need to think about these sorts of changes.

I.e. a *lot* of git users probably aren't aware that there's even a git config (they use some 3rd party UI), and I'd say the vast majority are likely to never find or read any sort of release notes about changes we make.

Most people's relation to git is like my relation to netcat. It's some tool I use 1-2 levels down in my stack, and I only bothered to find out about it because "ssh" stopped working one day.

If at the end of the day we decide to keep something like your original v1 28/28 patch + docs after some realistic look at the impact that would be fine by me. Just as long as we understand who we're likely to break stuff for, and whether it's worth the trade-off.

To Theodore's point about some people's motivations in [2], just to make my stance/opinion on the end-state clear (so far in all these threads I've been commenting on the "how" of the incremental transition):

I do 100% agree that the s/master/main/g change of the default should be made in one form or another. In my mind that doesn't even require a consideration of the political motivations at this point as far as git.git is concerned, just:

 1. Major Git hosting providers already made the change
 2. Realistically a lot/majority of git's user base interact with that
    in a major way.
 3. A discrepancy in any default between /usr/bin/git and those
    providers is more confusing than not.
 4. #3 doesn't mean they say "jump" we say "how high" whatever the
    change is.
    But in this case the default is an entirely arbitrary default. Not
    e.g. that they decided to add some ill-thought out header to the
    object format or whatever.
P.S.: Shouldn't the pull patch in d18c950a69f be using the advice
     facility, not warning()?
1. https://public-inbox.org/git/20201118114834.11137-1-avarab@gmail.com/
2. https://public-inbox.org/git/20201115034649.GC3985404@mit.edu/
Previous: Junio C HamanoNext: Felipe Contreras
Message 155 of 163 in “Use main as default branch name”
  1. 00/28 Use main as default branch nameJohannes Schindelin via GitGitGadget, Nov 12, 2020
  2. 05/28 t3416: preemptively adjust alignment in a commentJohannes Schindelin via GitGitGadget, Nov 12, 2020
  3. 02/28 t[01]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  4. 04/28 t3[0-3]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  5. 03/28 t2*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  6. 06/28 t34*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  7. 09/28 t5323: prepare centered comment for `master` -> `main`Johannes Schindelin via GitGitGadget, Nov 12, 2020
  8. 01/28 t0060: preemptively adjust alignmentJohannes Schindelin via GitGitGadget, Nov 12, 2020
  9. 13/28 t551*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  10. 15/28 t55[4-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  11. 07/28 t3[5-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  12. 16/28 t5[6-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  13. 12/28 t550*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  14. 22/28 t8*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  15. 24/28 t9[5-7]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  16. 25/28 tests(git-p4): transition to the default branch name `main`Johannes Schindelin via GitGitGadget, Nov 12, 2020
  17. 28/28 Change the default branch name to `main`Don Goodman-Wilson via GitGitGadget, Nov 12, 2020
  18. Ævar Arnfjörð BjarmasonNov 13, 2020
  19. Johannes SchindelinNov 13, 2020
  20. Junio C HamanoNov 16, 2020
  21. 27/28 tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer neededJohannes Schindelin via GitGitGadget, Nov 12, 2020
  22. 26/28 t99*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  23. 23/28 t9[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  24. 14/28 t55[23]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  25. Ævar Arnfjörð BjarmasonNov 13, 2020
  26. Johannes SchindelinNov 13, 2020
  27. Junio C HamanoNov 16, 2020
  28. 11/28 t5503: prepare aligned comment for replacing `master` with `main`Johannes Schindelin via GitGitGadget, Nov 12, 2020
  29. 10/28 t5[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  30. 08/28 t4*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  31. 21/28 t7[5-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  32. 19/28 t6[4-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  33. 17/28 t6[0-3]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  34. 18/28 t64*: preemptively adjust alignment to prepare for `master` -> `main`Johannes Schindelin via GitGitGadget, Nov 12, 2020
  35. 20/28 t7[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 12, 2020
  36. Felipe ContrerasNov 13, 2020
  37. Ævar Arnfjörð BjarmasonNov 13, 2020
  38. Johannes SchindelinNov 13, 2020
  39. tests: support testing with an arbitrary default branch (sort of)Ævar Arnfjörð Bjarmason, Nov 13, 2020
  40. Jeff KingNov 13, 2020
  41. Johannes SchindelinNov 13, 2020
  42. Johannes SchindelinNov 13, 2020
  43. Ævar Arnfjörð BjarmasonNov 13, 2020
  44. Felipe ContrerasNov 14, 2020
  45. Felipe ContrerasNov 13, 2020
  46. Junio C HamanoNov 14, 2020
  47. Junio C HamanoNov 16, 2020
  48. Johannes SchindelinNov 17, 2020
  49. Junio C HamanoNov 17, 2020
  50. Johannes SchindelinNov 18, 2020
  51. 00/27 tests: use main as default branch nameJohannes Schindelin via GitGitGadget, Nov 17, 2020
  52. 01/27 t0060: preemptively adjust alignmentJohannes Schindelin via GitGitGadget, Nov 17, 2020
  53. 05/27 t3416: preemptively adjust alignment in a commentJohannes Schindelin via GitGitGadget, Nov 17, 2020
  54. 03/27 t2*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  55. 02/27 t[01]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  56. 09/27 t5323: prepare centered comment for `master` -> `main`Johannes Schindelin via GitGitGadget, Nov 17, 2020
  57. 04/27 t3[0-3]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  58. 10/27 t5[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  59. 06/27 t34*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  60. 12/27 t550*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  61. 08/27 t4*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  62. 07/27 t3[5-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  63. 13/27 t551*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  64. 16/27 t5[6-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  65. 15/27 t55[4-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  66. 14/27 t55[23]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  67. 18/27 t64*: preemptively adjust alignment to prepare for `master` -> `main`Johannes Schindelin via GitGitGadget, Nov 17, 2020
  68. 23/27 t9[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  69. 25/27 tests(git-p4): transition to the default branch name `main`Johannes Schindelin via GitGitGadget, Nov 17, 2020
  70. 22/27 t8*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  71. 24/27 t9[5-7]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  72. 27/27 tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer neededJohannes Schindelin via GitGitGadget, Nov 17, 2020
  73. 21/27 t7[5-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  74. 26/27 t99*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  75. 11/27 t5503: prepare aligned comment for replacing `master` with `main`Johannes Schindelin via GitGitGadget, Nov 17, 2020
  76. 17/27 t6[0-3]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  77. 20/27 t7[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  78. 19/27 t6[4-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 17, 2020
  79. 28/27 tests: run tests omitted by PREPARE_FOR_MAIN_BRANCHÆvar Arnfjörð Bjarmason, Nov 18, 2020
  80. Johannes SchindelinNov 18, 2020
  81. Junio C HamanoNov 19, 2020
  82. Johannes SchindelinNov 20, 2020
  83. Junio C HamanoNov 20, 2020
  84. 00/28 tests: use main as default branch nameJohannes Schindelin via GitGitGadget, Nov 18, 2020
  85. 06/28 t3416: preemptively adjust alignment in a commentJohannes Schindelin via GitGitGadget, Nov 18, 2020
  86. 02/28 t0060: preemptively adjust alignmentJohannes Schindelin via GitGitGadget, Nov 18, 2020
  87. 01/28 tests: mark tests relying on the current default for `init.defaultBranch`Johannes Schindelin via GitGitGadget, Nov 18, 2020
  88. 10/28 t5323: prepare centered comment for `master` -> `main`Johannes Schindelin via GitGitGadget, Nov 18, 2020
  89. 04/28 t2*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  90. 07/28 t34*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  91. 11/28 t5[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  92. 13/28 t550*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  93. 16/28 t55[4-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  94. 05/28 t3[0-3]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  95. 15/28 t55[23]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  96. 12/28 t5503: prepare aligned comment for replacing `master` with `main`Johannes Schindelin via GitGitGadget, Nov 18, 2020
  97. 03/28 t[01]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  98. 08/28 t3[5-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  99. 09/28 t4*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  100. 26/28 tests(git-p4): transition to the default branch name `main`Johannes Schindelin via GitGitGadget, Nov 18, 2020
  101. 14/28 t551*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  102. 25/28 t9[5-7]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  103. 23/28 t8*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  104. 24/28 t9[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  105. 27/28 t99*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  106. 20/28 t6[4-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  107. 22/28 t7[5-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  108. 28/28 tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer neededJohannes Schindelin via GitGitGadget, Nov 18, 2020
  109. 21/28 t7[0-4]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  110. 19/28 t64*: preemptively adjust alignment to prepare for `master` -> `main`Johannes Schindelin via GitGitGadget, Nov 18, 2020
  111. 17/28 t5[6-9]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  112. 18/28 t6[0-3]*: adjust the references to the default branch name "main"Johannes Schindelin via GitGitGadget, Nov 18, 2020
  113. Junio C HamanoNov 19, 2020
  114. Eric W. BiedermanNov 17, 2020
  115. Felipe ContrerasNov 17, 2020
  116. Jeff KingNov 17, 2020
  117. Junio C HamanoNov 18, 2020
  118. Jeff KingNov 18, 2020
  119. Jonathan NiederNov 18, 2020
  120. Junio C HamanoNov 18, 2020
  121. Johannes SchindelinNov 18, 2020
  122. Junio C HamanoNov 18, 2020
  123. Johannes SchindelinNov 19, 2020
  124. Felipe ContrerasNov 18, 2020
  125. Jeff KingNov 18, 2020
  126. Felipe ContrerasNov 18, 2020
  127. Jeff KingNov 18, 2020
  128. Jonathan NiederNov 18, 2020
  129. Felipe ContrerasNov 18, 2020
  130. Felipe ContrerasNov 18, 2020
  131. Junio C HamanoNov 17, 2020
  132. Felipe ContrerasNov 17, 2020
  133. Junio C HamanoNov 18, 2020
  134. Felipe ContrerasNov 18, 2020
  135. Philip OakleyNov 18, 2020
  136. Johannes SchindelinNov 19, 2020
  137. Philip OakleyNov 19, 2020
  138. Peter HadlawNov 19, 2020
  139. Philip OakleyNov 19, 2020
  140. Peter HadlawNov 19, 2020
  141. Junio C HamanoNov 19, 2020
  142. Philip OakleyNov 19, 2020
  143. Sergey OrganovNov 19, 2020
  144. Philip OakleyNov 19, 2020
  145. Sergey OrganovNov 19, 2020
  146. Junio C HamanoNov 21, 2020
  147. Sergey OrganovNov 22, 2020
  148. Philip OakleyNov 22, 2020
  149. Sergey OrganovNov 22, 2020
  150. Philip OakleyNov 22, 2020
  151. Felipe ContrerasNov 22, 2020
  152. Junio C HamanoNov 22, 2020
  153. Jonathan NiederNov 18, 2020
  154. Junio C HamanoNov 18, 2020
  155. Ævar Arnfjörð BjarmasonNov 18, 2020
  156. Felipe ContrerasNov 18, 2020
  157. Ævar Arnfjörð BjarmasonNov 20, 2020
  158. Felipe ContrerasNov 20, 2020
  159. Junio C HamanoNov 18, 2020
  160. Johannes SchindelinNov 19, 2020
  161. Junio C HamanoNov 19, 2020
  162. Johannes SchindelinNov 22, 2020
  163. Johannes SchindelinNov 19, 2020

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.