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

Re: [PATCH 3/3] init: provide useful advice about init.defaultBranch

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Nov 23, 2020, 20:46 UTC
Message-ID
<nycvar.QRO.7.76.6.2011232136191.56@tvgsbejvaqbjf.bet>
In-Reply-To
<xmqqv9dvor27.fsf@gitster.c.googlers.com>
Hi Junio,
On Mon, 23 Nov 2020, Junio C Hamano wrote:
Show 27 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> >> The above may give a valuable lesson to those who want to use one
> >> branch name across new repositories, but it does not tell those who
> >> wanted 'trunk' (to match the project, perhaps github.com/cli/cli,
> >> with which they intend to interact) how to recover from having
> >> already created the 'master' branch.  We may want to add some text
> >> to suggest "branch -M" after giving the advice for the permanent
> >> option.
> >
> > Good point.
> >
> >> Also, it is unclear to those who do not have a good <name> in mind
> >> (or, those who do not care to choose a <name> for themselves), what
> >> <name> they should give to take the "or to silence this warning"
> >> part of the advice.
> >
> > Also a good point.
>
> > I came up with this, which I intend to submit with v2:
> >
> > static const char default_branch_name_advice[] = N_(
> > "Using '%s' as the name for the initial branch. This name is subject\n"
> > "to change. To configure the initial branch name to use in all of your\n"
> > "new repositories (or to suppress this warning), run:\n"
>
> The same issue around "to suppress" is here, though.

Hmm. I would like to believe that readers understand that setting it to _any_ name would suppress this warning.

Show 12 quoted lines
> > "\n"
> > "\tgit config --global init.defaultBranch <name>\n"
> > "\n"
> > "Common names are 'main', 'trunk' and 'development'. The initial branch\n"
> > "can be renamed via this command:\n"
> > "\n"
> > "\tgit branch -m <name>\n"
>
> It is very likely that the users are on an unborn branch when they
> see this message and "git branch -m/-M <name>" does not work.  We'd
> probably want to update "git branch" to allow renaming the current
> branch that is unborn.

Ouch, good point, I had not even realized that that does not work. In v2, I will include a patch that lets it work.

> In the meantime, you could do "git checkout --orphan <name>" here,
> but once <name> exists as a branch that would not work, so...

Careful. We should start thinking about phasing out either `checkout` or `switch`. The latter was intended to supersede the former with respect to working on branches, so I would think of phasing out `checkout` and favor `switch` instead.

That issue aside, `git switch --orphan <name>` is not necessarily a good UI here. Its documentation talks about creating a new branch, deleting all tracked files. While it is technically still correct that this command, when run on an unborn branch, does the same as renaming said branch, it is highly unintuitive to think about it that way. ("I don't want to create a new branch, I want to rename the current one! And whoa, delete tracked files? I don't want to delete _any_ files! What do you mean: there aren't any tracked files, so none are deleted? Why do you talk about deleting files, then?")

So in the interest of _reducing_ confusion, I would really, really, _really_ like to avoid mentioning that command in this advice.

It really is much better to make `git branch -m <name>` work in this scenario.

Ciao, Dscho

Show 7 quoted lines
>
>
> > );
> >
> > Ciao,
> > Dscho
>
Previous: Junio C HamanoNext: Junio C Hamano
Message 11 of 57 in “Add helpful advice about init.defaultBranch”
  1. 0/3 Add helpful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Nov 22, 2020
  2. 2/3 get_default_branch_name(): prepare for showing some adviceJohannes Schindelin via GitGitGadget, Nov 22, 2020
  3. 1/3 init: document `init.defaultBranch` betterJohannes Schindelin via GitGitGadget, Nov 22, 2020
  4. Junio C HamanoNov 22, 2020
  5. Johannes SchindelinNov 23, 2020
  6. 3/3 init: provide useful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Nov 22, 2020
  7. Junio C HamanoNov 22, 2020
  8. Junio C HamanoNov 23, 2020
  9. Johannes SchindelinNov 23, 2020
  10. Junio C HamanoNov 23, 2020
  11. Johannes SchindelinNov 23, 2020
  12. Junio C HamanoNov 23, 2020
  13. Johannes SchindelinNov 23, 2020
  14. Philip OakleyNov 23, 2020
  15. Johannes SchindelinNov 23, 2020
  16. 0/4 Add helpful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Nov 23, 2020
  17. 1/4 init: document `init.defaultBranch` betterJohannes Schindelin via GitGitGadget, Nov 23, 2020
  18. 3/4 get_default_branch_name(): prepare for showing some adviceJohannes Schindelin via GitGitGadget, Nov 23, 2020
  19. 2/4 branch -m: allow renaming a yet-unborn branchJohannes Schindelin via GitGitGadget, Nov 23, 2020
  20. Junio C HamanoNov 23, 2020
  21. Johannes SchindelinNov 24, 2020
  22. Junio C HamanoNov 24, 2020
  23. 4/4 init: provide useful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Nov 23, 2020
  24. Junio C HamanoNov 23, 2020
  25. Johannes SchindelinNov 24, 2020
  26. Junio C HamanoNov 24, 2020
  27. Johannes SchindelinDec 9, 2020
  28. Junio C HamanoDec 9, 2020
  29. Johannes SchindelinDec 10, 2020
  30. Junio C HamanoDec 10, 2020
  31. Felipe ContrerasDec 10, 2020
  32. 0/4 Add helpful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Nov 24, 2020
  33. 1/4 init: document `init.defaultBranch` betterJohannes Schindelin via GitGitGadget, Nov 24, 2020
  34. 4/4 init: provide useful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Nov 24, 2020
  35. 2/4 branch -m: allow renaming a yet-unborn branchJohannes Schindelin via GitGitGadget, Nov 24, 2020
  36. 3/4 get_default_branch_name(): prepare for showing some adviceJohannes Schindelin via GitGitGadget, Nov 24, 2020
  37. 0/4 Add helpful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Dec 10, 2020
  38. 4/4 init: provide useful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Dec 10, 2020
  39. Felipe ContrerasDec 11, 2020
  40. Junio C HamanoDec 11, 2020
  41. Felipe ContrerasDec 11, 2020
  42. Johannes SchindelinDec 11, 2020
  43. 2/4 branch -m: allow renaming a yet-unborn branchJohannes Schindelin via GitGitGadget, Dec 10, 2020
  44. 1/4 init: document `init.defaultBranch` betterJohannes Schindelin via GitGitGadget, Dec 10, 2020
  45. Felipe ContrerasDec 11, 2020
  46. Junio C HamanoDec 11, 2020
  47. Felipe ContrerasDec 11, 2020
  48. Junio C HamanoDec 11, 2020
  49. 3/4 get_default_branch_name(): prepare for showing some adviceJohannes Schindelin via GitGitGadget, Dec 10, 2020
  50. 0/4 Add helpful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Dec 11, 2020
  51. 2/4 branch -m: allow renaming a yet-unborn branchJohannes Schindelin via GitGitGadget, Dec 11, 2020
  52. 1/4 init: document `init.defaultBranch` betterJohannes Schindelin via GitGitGadget, Dec 11, 2020
  53. 3/4 get_default_branch_name(): prepare for showing some adviceJohannes Schindelin via GitGitGadget, Dec 11, 2020
  54. 4/4 init: provide useful advice about init.defaultBranchJohannes Schindelin via GitGitGadget, Dec 11, 2020
  55. SZEDER GáborFeb 2, 2021
  56. Junio C HamanoFeb 2, 2021
  57. SZEDER GáborFeb 3, 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.