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, 12:26 UTC
Message-ID
<nycvar.QRO.7.76.6.2011231308140.56@tvgsbejvaqbjf.bet>
In-Reply-To
<xmqqft51osnu.fsf@gitster.c.googlers.com>
Hi Junio,
On Sun, 22 Nov 2020, Junio C Hamano wrote:
Show 13 quoted lines
> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
>
> > From: Johannes Schindelin <johannes.schindelin@gmx.de>
> >
> > To give ample warning in case we decide to change the fall-back for an
> > unconfigured `init.defaultBranch`, let's introduce some advice that is
> > shown upon `git init` when that value is not set.
>
> I know this means well.
>
> I however doubt "ample warning" before we announce an actual
> decision makes user's life any easier in practice, though.

I reworded the commit message to make the rationale more obvious: the ample warning is to give users a chance to override whatever is Git's default branch name by configuring `init.defaultBranch`. If they care at all.

Show 15 quoted lines
> Until they know what it will be changed to (if we decide not to change
> anything, treat it as changing it to 'master'), they would not be able
> to decide if the name is more suitable for their use case.
>
> I further suspect that their choice will be influenced the most by
> the choice made by the projects they most often interact with, and
> not by our plan.
>
> > +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 name to use as the initial branch name in\n"
> > +"new repositories, or to silence this warning, run:\n"
>
> s/new repositories/all of your new repositories/ as that is the
> whole point of using --global option below.
Makes sense.
Show 29 quoted lines
> > +"\n"
> > +"\tgit config --global init.defaultBranch <name>\n"
> > +);
> > +
>
> > +test_expect_success 'advice on unconfigured init.defaultBranch' '
> > +	GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git -c color.advice=always \
> > +		init unconfigured-default-branch-name 2>err &&
> > +	test_decode_color <err >decoded &&
> > +	test_i18ngrep "<YELLOW>hint: " decoded
> > +'
> > +
>
> > diff --git a/t/t7414-submodule-mistakes.sh b/t/t7414-submodule-mistakes.sh
> > index f2e7df59cf..0ed02938f9 100755
> > --- a/t/t7414-submodule-mistakes.sh
> > +++ b/t/t7414-submodule-mistakes.sh
> > @@ -30,7 +30,7 @@ test_expect_success 'no warning when updating entry' '
> >
> >  test_expect_success 'submodule add does not warn' '
> >  	test_when_finished "git rm -rf submodule .gitmodules" &&
> > -	git submodule add ./embed submodule 2>stderr &&
> > +	git -c init.defaultBranch=x submodule add ./embed submodule 2>stderr &&
> >  	test_i18ngrep ! warning stderr
> >  '
>
> It is a bit subtle that this not only tests whatever "git submodule"
> test it originally wanted to do but also serves as a test that the
> new advice message is squelched by the presence of the configuration.
Thank you for catching this. It is a debugging left-over.

The real fix for the underlying issue is in the previous commit, which silences the warning when `init_db()` is called via `clone`, as is the case here.

I removed it from v2.
Show 18 quoted lines
> > diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> > index 59bbf75e83..772152320a 100644
> > --- a/t/test-lib-functions.sh
> > +++ b/t/test-lib-functions.sh
> > @@ -1202,7 +1202,8 @@ test_create_repo () {
> >  	mkdir -p "$repo"
> >  	(
> >  		cd "$repo" || error "Cannot setup test environment"
> > -		"${GIT_TEST_INSTALLED:-$GIT_EXEC_PATH}/git$X" init \
> > +		"${GIT_TEST_INSTALLED:-$GIT_EXEC_PATH}/git$X" \
> > +			-c init.defaultBranch=master init \
>
> I wonder if this should be more like
>
> 	-c init.defaultBranch=${GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME-master}
>
> so that tests that want a particular branch name would get what they
> want?

As is custom with our `GIT_TEST_*` variables, `GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME` overrides `init.defaultBranch`.

Therefore, _technically_ what you suggested is not even necessary here.
> Eventually we would need to do the s/master/X/ if/when the actual
> default change happens.

However, _practically_, what you suggested is very helpful, as it will make it easy to find when (if?) we finish the transition to a new fall-back.

Thank you for your thorough feedback, Dscho

> >  			"--template=$GIT_BUILD_DIR/templates/blt/" >&3 2>&4 ||
> >  		error "cannot run git init -- have you built things yet?"
> >  		mv .git/hooks .git/hooks-disabled
>
Previous: Junio C HamanoNext: Philip Oakley
Message 13 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.