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

Re: [PATCH v2 01/12] fast-export: do anonymize the primary branch name

From
Elijah Newren <newren@gmail.com>
Date
Jun 18, 2020, 07:13 UTC
Message-ID
<CABPp-BHB_WQqvRBKyA3bGy0L8FZhnN2CL2jHepDBrkjUDNrE=Q@mail.gmail.com>
In-Reply-To
<xmqqzh90q414.fsf@gitster.c.googlers.com>
Hi Junio,
On Wed, Jun 17, 2020 at 11:30 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 21 quoted lines
>
> Elijah Newren <newren@gmail.com> writes:
>
> >> That leaves us in the interim with a "fast-export --anonymize" that is a
> >> little harder to use (you have no way to know which branch was which).
> >
> > Why does fast-export special case on "master" rather than on HEAD?
> > Isn't it more relevant to know the active branch than what _might_
> > have been the initial branch?  It kind of feels like a bug to me that
> > HEAD isn't the special case construct.
>
> I am torn on that one.  Surely HEAD is often the branch that has our
> current attention.  It may well be what we are exporting and we may
> want to see the topology formed by other refs relative to it.
>
> On the other hand, the current branch may not necessarily be what we
> are exporting.  Historically a project has a single branch that is
> the focus of most users' attention when they talk about the general
> state of the project's progress, so it is understandable to expect
> that the topology may want to be seen relative to that one central
> line of development.

I'm trying to understand here, but I feel like I'm missing something. Let me try to explain what I understand and hopefully you can figure out what I'm not seeing...

Regardless of what is mainline and whether or not it is important, users probably trigger their bug when a certain branch is checked out. Their bug may also trigger on other branches, but it at least triggers on one, and some bugs will only trigger on one branch. It seems logical to me that we would want to have the same branch checked out (it's the one most likely to trigger the same issue), and thus identifying the HEAD branch is generally important. (Mainline may be too, I'm merely asserting that HEAD is important at this point.)

If users trigger their bug by providing various revision specifications on the command line that compare multiple branches or something, then we're already in the situation of needing to know how to map more than one reference to anonymized ones in order to be able to replicate their issue. However, knowing the mainline might not even help in this case; we instead need to know the anonymized form of the references they are using, whatever those are, and mainline is only useful if it happens to be one of them.

So, I think HEAD is always useful. Additional references would sometimes be useful, but it's not clear to me that mainline is one of those additional references. Maybe I'm just being dense, and I apologize if so, but under what circumstances does knowing the mainline help with debugging a user issue where an anonymized fast-export is provided?

Show 9 quoted lines
> > (Speaking as someone whose company a number of years ago had most
> > their big repos and lots of little repos switch their main branch to
> > be named "develop", and in some of those repos deleted "master" but
> > didn't in others.  If I had needed some steps to reproduce a problem,
> > and hadn't been on the inside, any special casing from fast-export
> > would make more sense to me to apply to "develop" than to "master".)
>
> Yes, absolutely.  You either check "develop" out temporarily just to
> take anonymized export to make "develop" discoverable in the output,

That makes sense; if the bug triggers while they are on develop then I'd expect them to be on develop when they export. If it triggers on some other branch, I'd expect them to stay on that other branch when they export even if "develop" is the mainline.

> or you would have set core.primaryBranch to "develop" once sometime
> in the past to tell Git that "develop" is that special one, not
> "master", so you can take such an export from any branch.

This doesn't make sense to me. The person who changed the primary branch to "develop" for some repository did so years ago. That individual might not even still be at the company, and even if they are, may well be working on a totally different project (and repository) today. Perhaps that individual set core.primaryBranch at the time, but git-config settings aren't copied by fetch/clone/push, so I don't see how this one helps at all. We could tell all future developers who clone any of these repositories that they also need to set core.primaryBranch when they clone the repo, but that seems super lame to me especially since the odds that any one of them will ever need or benefit from it are approximately 0. And yet, it'll be one of these developers who joined the project long after the switchover who runs into problems and provides fast-export dumps.

It feels like I'm probably just missing something obvious, but I really don't see how the mainline is special here. Please do point out what I'm missing.

Thanks, Elijah

Previous: Junio C HamanoNext: Jeff King
Message 90 of 180 in “Allow overriding the default name of the default branch”
  1. 0/9 Allow overriding the default name of the default branchJohannes Schindelin via GitGitGadget, Jun 10, 2020
  2. 1/9 init: allow overriding the default branch name for new repositoriesDon Goodman-Wilson via GitGitGadget, Jun 10, 2020
  3. brian m. carlsonJun 10, 2020
  4. Eric SunshineJun 11, 2020
  5. Johannes SchindelinJun 11, 2020
  6. Junio C HamanoJun 11, 2020
  7. Jeff KingJun 16, 2020
  8. Jeff KingJun 16, 2020
  9. Johannes SchindelinJun 18, 2020
  10. Johannes SchindelinJun 23, 2020
  11. Phillip WoodJun 11, 2020
  12. Johannes SchindelinJun 12, 2020
  13. Junio C HamanoJun 12, 2020
  14. Phillip WoodJun 15, 2020
  15. Johannes SchindelinJun 14, 2020
  16. Alban GruinJun 11, 2020
  17. Junio C HamanoJun 11, 2020
  18. brian m. carlsonJun 11, 2020
  19. Johannes SchindelinJun 12, 2020
  20. Alban GruinJun 13, 2020
  21. Johannes SchindelinJun 14, 2020
  22. Jeff KingJun 16, 2020
  23. Johannes SchindelinJun 18, 2020
  24. 3/9 send-pack/transport-helper: respect `core.defaultBranchName`Johannes Schindelin via GitGitGadget, Jun 10, 2020
  25. 2/9 remote: respect `core.defaultBranchName`Johannes Schindelin via GitGitGadget, Jun 10, 2020
  26. Jeff KingJun 16, 2020
  27. Johannes SchindelinJun 18, 2020
  28. Jeff KingJun 18, 2020
  29. Johannes SchindelinJun 23, 2020
  30. 7/9 fmt-merge-msg: learn about the possibly-configured default branch nameJohannes Schindelin via GitGitGadget, Jun 10, 2020
  31. Junio C HamanoJun 10, 2020
  32. 6/9 clone: learn about the possibly-configured default branch nameJohannes Schindelin via GitGitGadget, Jun 10, 2020
  33. Junio C HamanoJun 10, 2020
  34. 8/9 fast-export: respect the possibly-overridden default branch nameJohannes Schindelin via GitGitGadget, Jun 10, 2020
  35. Matt RogersJun 10, 2020
  36. Junio C HamanoJun 10, 2020
  37. brian m. carlsonJun 10, 2020
  38. Matt RogersJun 11, 2020
  39. Junio C HamanoJun 11, 2020
  40. Johannes SchindelinJun 11, 2020
  41. Re* [PATCH 8/9] fast-export: respect the possibly-overridden default branch nameJunio C Hamano, Jun 11, 2020
  42. Junio C HamanoJun 11, 2020
  43. Junio C HamanoJun 11, 2020
  44. Johannes SchindelinJun 12, 2020
  45. Junio C HamanoJun 12, 2020
  46. Johannes SchindelinJun 12, 2020
  47. Junio C HamanoJun 12, 2020
  48. Johannes SchindelinJun 12, 2020
  49. Johannes SchindelinJun 12, 2020
  50. Junio C HamanoJun 12, 2020
  51. Junio C HamanoJun 12, 2020
  52. Johannes SchindelinJun 13, 2020
  53. Junio C HamanoJun 12, 2020
  54. Johannes SixtJun 13, 2020
  55. Junio C HamanoJun 13, 2020
  56. Johannes SchindelinJun 13, 2020
  57. Junio C HamanoJun 13, 2020
  58. Johannes SchindelinJun 14, 2020
  59. Junio C HamanoJun 17, 2020
  60. Johannes SchindelinJun 23, 2020
  61. Junio C HamanoJun 23, 2020
  62. Johannes SchindelinJun 13, 2020
  63. Johannes SchindelinJun 11, 2020
  64. Junio C HamanoJun 11, 2020
  65. Johannes SchindelinJun 12, 2020
  66. 9/9 Document how the default branch name can be overriddenJohannes Schindelin via GitGitGadget, Jun 10, 2020
  67. Junio C HamanoJun 11, 2020
  68. 5/9 submodule: use the (possibly overridden) default branch nameJohannes Schindelin via GitGitGadget, Jun 10, 2020
  69. Denton LiuJun 15, 2020
  70. 4/9 testsvn: respect `core.defaultBranchName`Johannes Schindelin via GitGitGadget, Jun 10, 2020
  71. Junio C HamanoJun 10, 2020
  72. Junio C HamanoJun 11, 2020
  73. Johannes SchindelinJun 11, 2020
  74. Junio C HamanoJun 11, 2020
  75. brian m. carlsonJun 10, 2020
  76. Taylor BlauJun 11, 2020
  77. Johannes SchindelinJun 11, 2020
  78. Pratyush YadavJun 15, 2020
  79. Johannes SchindelinJun 14, 2020
  80. Denton LiuJun 16, 2020
  81. Johannes SchindelinJun 23, 2020
  82. brian m. carlsonJun 15, 2020
  83. 00/12 Allow overriding the default name of the default branchJohannes Schindelin via GitGitGadget, Jun 15, 2020
  84. 01/12 fast-export: do anonymize the primary branch nameJunio C Hamano via GitGitGadget, Jun 15, 2020
  85. Jeff KingJun 16, 2020
  86. Junio C HamanoJun 17, 2020
  87. Jeff KingJun 17, 2020
  88. Elijah NewrenJun 18, 2020
  89. Junio C HamanoJun 18, 2020
  90. Elijah NewrenJun 18, 2020
  91. Jeff KingJun 18, 2020
  92. 02/12 fmt-merge-msg: introduce a way to override the main branch nameJohannes Schindelin via GitGitGadget, Jun 15, 2020
  93. Phillip WoodJun 15, 2020
  94. Johannes SchindelinJun 23, 2020
  95. Junio C HamanoJun 15, 2020
  96. Johannes SchindelinJun 23, 2020
  97. Ævar Arnfjörð BjarmasonJun 16, 2020
  98. Junio C HamanoJun 17, 2020
  99. Jeff KingJun 16, 2020
  100. Junio C HamanoJun 17, 2020
  101. Johannes SchindelinJun 18, 2020
  102. Johannes SixtJun 17, 2020
  103. Junio C HamanoJun 17, 2020
  104. Johannes SchindelinJun 23, 2020
  105. 05/12 fast-export: handle overridden main branch names correctlyJohannes Schindelin via GitGitGadget, Jun 15, 2020
  106. Phillip WoodJun 15, 2020
  107. Jeff KingJun 16, 2020
  108. Phillip WoodJun 16, 2020
  109. Johannes SchindelinJun 18, 2020
  110. Junio C HamanoJun 15, 2020
  111. Johannes SchindelinJun 23, 2020
  112. 04/12 git_main_branch_name(): optionally report the full ref nameJohannes Schindelin via GitGitGadget, Jun 15, 2020
  113. Phillip WoodJun 15, 2020
  114. Johannes SchindelinJun 23, 2020
  115. 03/12 send-pack/transport-helper: respect `core.mainBranch`Johannes Schindelin via GitGitGadget, Jun 15, 2020
  116. 06/12 branch -m: adjust `core.mainBranch` if necessaryJohannes Schindelin via GitGitGadget, Jun 15, 2020
  117. 12/12 testsvn: respect `init.defaultBranch`Johannes Schindelin via GitGitGadget, Jun 15, 2020
  118. Jeff KingJun 16, 2020
  119. Johannes SchindelinJun 23, 2020
  120. 10/12 remote: learn about the possibly-overridden default main branch nameJohannes Schindelin via GitGitGadget, Jun 15, 2020
  121. 11/12 submodule: use the correct default for the main branch nameJohannes Schindelin via GitGitGadget, Jun 15, 2020
  122. Jeff KingJun 16, 2020
  123. Johannes SchindelinJun 23, 2020
  124. Jeff KingJun 23, 2020
  125. 09/12 clone: handle overridden main branch namesJohannes Schindelin via GitGitGadget, Jun 15, 2020
  126. Jeff KingJun 16, 2020
  127. Johannes SchindelinJun 23, 2020
  128. 08/12 init: allow overriding the default main branch name via the configDon Goodman-Wilson via GitGitGadget, Jun 15, 2020
  129. 07/12 init: allow specifying the main branch name for the new repositoryJohannes Schindelin via GitGitGadget, Jun 15, 2020
  130. 0/8 Allow overriding the default name of the default branchJohannes Schindelin via GitGitGadget, Jun 23, 2020
  131. 2/8 send-pack/transport-helper: avoid mentioning a particular branchJohannes Schindelin via GitGitGadget, Jun 23, 2020
  132. Junio C HamanoJun 24, 2020
  133. Johannes SchindelinJun 24, 2020
  134. Junio C HamanoJun 24, 2020
  135. Johannes SchindelinJun 25, 2020
  136. 1/8 fmt-merge-msg: stop treating `master` speciallyJohannes Schindelin via GitGitGadget, Jun 23, 2020
  137. Junio C HamanoJun 24, 2020
  138. Johannes SchindelinJun 25, 2020
  139. 8/8 testsvn: respect `init.defaultBranch`Johannes Schindelin via GitGitGadget, Jun 23, 2020
  140. 4/8 init: allow specifying the initial branch name for the new repositoryJohannes Schindelin via GitGitGadget, Jun 23, 2020
  141. Junio C HamanoJun 24, 2020
  142. Johannes SchindelinJun 24, 2020
  143. 7/8 remote: use the configured default branch name when appropriateJohannes Schindelin via GitGitGadget, Jun 23, 2020
  144. Junio C HamanoJun 24, 2020
  145. Johannes SchindelinJun 24, 2020
  146. 3/8 submodule: use a better fall-back for missing remote.<name>.branchJohannes Schindelin via GitGitGadget, Jun 23, 2020
  147. Philippe BlainJun 24, 2020
  148. Johannes SchindelinJun 24, 2020
  149. 6/8 clone: use configured default branch name when appropriateJohannes Schindelin via GitGitGadget, Jun 23, 2020
  150. 5/8 init: allow setting the default for the initial branch name via the configDon Goodman-Wilson via GitGitGadget, Jun 23, 2020
  151. Junio C HamanoJun 24, 2020
  152. Johannes SchindelinJun 24, 2020
  153. Junio C HamanoJun 24, 2020
  154. 0/9 Allow overriding the default name of the default branchJohannes Schindelin via GitGitGadget, Jun 24, 2020
  155. 2/9 send-pack/transport-helper: avoid mentioning a particular branchJohannes Schindelin via GitGitGadget, Jun 24, 2020
  156. 7/9 clone: use configured default branch name when appropriateJohannes Schindelin via GitGitGadget, Jun 24, 2020
  157. 9/9 testsvn: respect `init.defaultBranch`Johannes Schindelin via GitGitGadget, Jun 24, 2020
  158. 8/9 remote: use the configured default branch name when appropriateJohannes Schindelin via GitGitGadget, Jun 24, 2020
  159. 4/9 docs: add missing diamond bracketsJohannes Schindelin via GitGitGadget, Jun 24, 2020
  160. 3/9 submodule: fall back to remote's HEAD for missing remote.<name>.branchJohannes Schindelin via GitGitGadget, Jun 24, 2020
  161. Junio C HamanoJun 24, 2020
  162. 1/9 fmt-merge-msg: stop treating `master` speciallyJohannes Schindelin via GitGitGadget, Jun 24, 2020
  163. Đoàn Trần Công DanhJun 29, 2020
  164. Johannes SchindelinJun 29, 2020
  165. Đoàn Trần Công DanhJun 30, 2020
  166. Johannes SchindelinJul 1, 2020
  167. Junio C HamanoJul 1, 2020
  168. 6/9 init: allow setting the default for the initial branch name via the configDon Goodman-Wilson via GitGitGadget, Jun 24, 2020
  169. 5/9 init: allow specifying the initial branch name for the new repositoryJohannes Schindelin via GitGitGadget, Jun 24, 2020
  170. Junio C HamanoJun 24, 2020
  171. Johannes SchindelinJun 25, 2020
  172. brian m. carlsonJun 29, 2020
  173. Edward ThomsonJul 12, 2020
  174. Johannes SchindelinJul 12, 2020
  175. Ævar Arnfjörð BjarmasonJun 16, 2020
  176. Jeff KingJun 16, 2020
  177. Jeff KingJun 16, 2020
  178. Johannes SchindelinJun 23, 2020
  179. Junio C HamanoJun 17, 2020
  180. Johannes SchindelinJul 14, 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.