Phillip Wood <phillip.wood123@xxxxxxxxx> writes: > diff --git a/Documentation/BreakingChanges.adoc b/Documentation/BreakingChanges.adoc > index f8d2eba061c..93922299321 100644 > --- a/Documentation/BreakingChanges.adoc > +++ b/Documentation/BreakingChanges.adoc > @@ -165,6 +165,11 @@ A prerequisite for this change is that the ecosystem is ready to support the > "reftable" format. Most importantly, alternative implementations of Git like > JGit, libgit2 and Gitoxide need to support it. > > +* The default branch name will be `main`. We have been warning that the default > + name will change since 675704c74dd (init: provide useful advice about > + init.defaultBranch, 2020-12-11). The new name matches the default branch name > + used by many of the big git forges. > + Good. > diff --git a/Documentation/git-init.adoc b/Documentation/git-init.adoc > index a0dffba665f..39d4db6bccb 100644 > --- a/Documentation/git-init.adoc > +++ b/Documentation/git-init.adoc > @@ -77,9 +77,15 @@ If this is a reinitialization, the repository will be moved to the specified pat > `-b <branch-name>`:: > `--initial-branch=<branch-name>`:: > Use _<branch-name>_ for the initial branch in the newly created > -repository. If not specified, fall back to the default name (currently > -`master`, but this is subject to change in the future; the name can be > -customized via the `init.defaultBranch` configuration variable). > +repository. If not specified, fall back to the default name > +ifndef::with-breaking-changes[] > +(currently `master`, but this will change to `main` when Git 3.0 is released). > +endif::with-breaking-changes[] > +ifdef::with-breaking-changes[] > +(`main`). > +endif::with-breaking-changes[] Good. We might have to change it back to "(currently `main`)" again but I do not see the need to prepare for such a re-rename. As we do not have the "currently", we can say ... to the default name `main`. without parentheses. > +The default name can be customized via the `init.defaultBranch` configuration > +variable. > diff --git a/advice.c b/advice.c > index e5f0ff84491..48c49ee4145 100644 > --- a/advice.c > +++ b/advice.c > @@ -51,7 +51,9 @@ static struct { > [ADVICE_AM_WORK_DIR] = { "amWorkDir" }, > [ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] = { "checkoutAmbiguousRemoteBranchName" }, > [ADVICE_COMMIT_BEFORE_MERGE] = { "commitBeforeMerge" }, > +#ifndef WITH_BREAKING_CHANGES > [ADVICE_DEFAULT_BRANCH_NAME] = { "defaultBranchName" }, > +#endif /* WITH_BREAKING_CHANGES */ > [ADVICE_DETACHED_HEAD] = { "detachedHead" }, > [ADVICE_DIVERGING] = { "diverging" }, > [ADVICE_FETCH_SET_HEAD_WARN] = { "fetchRemoteHEADWarn" }, > diff --git a/advice.h b/advice.h > index 727dcecf4a3..fc1dc872049 100644 > --- a/advice.h > +++ b/advice.h > @@ -18,7 +18,9 @@ enum advice_type { > ADVICE_AM_WORK_DIR, > ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME, > ADVICE_COMMIT_BEFORE_MERGE, > +#ifndef WITH_BREAKING_CHANGES > ADVICE_DEFAULT_BRANCH_NAME, > +#endif /* WITH_BREAKING_CHANGES */ > ADVICE_DETACHED_HEAD, > ADVICE_DIVERGING, > ADVICE_FETCH_SET_HEAD_WARN, Good. > diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh > index 01823fd0f14..a21834043f3 100755 > --- a/ci/run-build-and-tests.sh > +++ b/ci/run-build-and-tests.sh > @@ -9,7 +9,6 @@ run_tests=t > > case "$jobname" in > linux-breaking-changes) > - export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main Questionable. > diff --git a/refs.c b/refs.c > index 4ff55cf24f6..e73f63ff6b8 100644 > --- a/refs.c > +++ b/refs.c > @@ -627,10 +627,12 @@ void expand_ref_prefix(struct strvec *prefixes, const char *prefix) > strvec_pushf(prefixes, *p, len, prefix); > } > > +#ifndef WITH_BREAKING_CHANGES > static const char default_branch_name_advice[] = N_( > "Using '%s' as the name for the initial branch. This default branch name\n" > -"is subject to change. To configure the initial branch name to use in all\n" > -"of your new repositories, which will suppress this warning, call:\n" > +"will change to \"main\" in Git 3.0. To configure the initial branch name\n" > +"to use in all of your new repositories, which will suppress this warning,\n" > +"call:\n" > "\n" > "\tgit config --global init.defaultBranch <name>\n" > "\n" > @@ -639,24 +641,32 @@ static const char default_branch_name_advice[] = N_( > "\n" > "\tgit branch -m <name>\n" > ); > +#endif /* WITH_BREAKING_CHANGES */ Good. > char *repo_default_branch_name(struct repository *r, int quiet) > { > const char *config_key = "init.defaultbranch"; > const char *config_display_key = "init.defaultBranch"; > char *ret = NULL, *full_ref; > +#ifndef WITH_BREAKING_CHANGES > const char *env = getenv("GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME"); > > if (env && *env) > ret = xstrdup(env); > - else if (repo_config_get_string(r, config_key, &ret) < 0) > +#endif /* WITH_BREAKING_CHANGES */ Questionable. > + if (!ret && repo_config_get_string(r, config_key, &ret) < 0) > die(_("could not retrieve `%s`"), config_display_key); > > if (!ret) { > +#ifdef WITH_BREAKING_CHANGES > + ret = xstrdup("main"); > + (void) quiet; /* Silence -Wunused-parameter */ > +#else > ret = xstrdup("master"); > if (!quiet) > advise_if_enabled(ADVICE_DEFAULT_BRANCH_NAME, > _(default_branch_name_advice), ret); > +#endif /* WITH_BREAKING_CHANGES */ Very good. Thanks.