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 >