From: Phillip Wood <phillip.wood123@gmail•com>
To: Junio C Hamano <gitster@pobox•com>
Cc: git@vger•kernel.org,
Johannes Schindelin <Johannes.Schindelin@gmx•de>,
Wing Huang <huangsen365@gmail•com>,
Patrick Steinhardt <ps@pks•im>
Subject: Re: [PATCH v2 1/4] breaking-changes: switch default branch to main
Date: Fri, 5 Sep 2025 11:06:41 +0100 [thread overview]
Message-ID: <f43c3e61-01c8-47d8-bf0d-7cfa13cacca5@gmail.com> (raw)
In-Reply-To: <xmqqjz2e86b7.fsf@gitster.g>
On 04/09/2025 18:40, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail•com> writes:
>
>> diff --git a/Documentation/BreakingChanges.adoc b/Documentation/BreakingChanges.adoc
>> index f8d2eba061c..eb92e6f6a7d 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.
>>
>> +* In new repositories 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.
>
> As I am not a native, this is a mere question and not a suggestion,
> but my reading hiccups when I see the lack of comma after "In new
> repositories".
I agree a comma would be good here
> "used by many of" -> "used for new repositories by many of"?
Sounds good
>> 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" },
>
> Would there be folks who type "git init" to get a 'main' branch,
> while trying to follow a recipe written in pre-3.0 days that assumes
> the initial branch is called differently, and get confused after
> seeing many commands written in the recipe for them to follow , like
> "git checkout -b next master" fail? Do they need a different advice
> message to help them, i.e.e.g,
>
> $ git init
> Initialized empty Git repository in /a/b/c/.git/
> hint: Since Git 3.0, an initial branch is 'main' these days.
> hint: If you need its name to be different (e.g. 'frotz'),
> hint: you can immediately rename it with "git branch -m frotz".
> hint: Disable this message with "got config set advice.foo false"
>
> or something? I dunno. In any case, that will have to be a new and
> different advice message, and defaultBranchName should not be reused
> for that purpose, so the change in the the above hunk is fine. I am
> wondering if we need a new entry protected by the same #ifdef on the
> #else side.
Personally I find the current advice pretty annoying and would be glad
to see it go away. Are there really that many people who want to
customize the initial branch name that it is worth adding some new
advice post Git 3.0? Although I find it annoying, I do think the current
advice serves a useful purpose as it informs people the default that
they are used to is changing and that they can override it. Given how
long we've been warning people I'm not sure we need to say anything once
the default has changed.
>> 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
>> export WITH_BREAKING_CHANGES=YesPlease
>> ;;
>
> OK.
>
>> linux-TEST-vars)
>
> We have been very careful to make sure that none of our tests
> implicitly rely on that the initial branch name will still be
> 'master' with the above. Now we should make sure that none of our
> tests implicitly assume that the initial branch name will forever be
> called 'main'. In the post-context, linux-TEST-vars arm has
> something that forces the initial branch name to be 'master', and we
> probably should keep it for a while to serve that purpose.
That sounds sensible. I'll wait a few days to see if there are any other
comments and then re-roll the the documentation tweaks you suggested above.
Thanks
Phillip
>> diff --git a/refs.c b/refs.c
>> index 4ff55cf24f6..149a8d1cec1 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,8 +641,9 @@ static const char default_branch_name_advice[] = N_(
>> "\n"
>> "\tgit branch -m <name>\n"
>> );
>> +#endif /* WITH_BREAKING_CHANGES */
>>
>> -char *repo_default_branch_name(struct repository *r, int quiet)
>> +char *repo_default_branch_name(struct repository *r, MAYBE_UNUSED int quiet)
>> {
>
> And if we were to introduce a new advice to help people who still
> expected the traditional name, this MAYBE_UNUSED would not become
> necessary ...
>
>> const char *config_key = "init.defaultbranch";
>> const char *config_display_key = "init.defaultBranch";
>> @@ -649,14 +652,18 @@ char *repo_default_branch_name(struct repository *r, int quiet)
>>
>> if (env && *env)
>> ret = xstrdup(env);
>> - else if (repo_config_get_string(r, config_key, &ret) < 0)
>> + 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");
>
> ... as we will have the same if (!quiet) advice sequence here,
> protected with a different ADVICE_ thing.
>
>> +#else
>> ret = xstrdup("master");
>> if (!quiet)
>> advise_if_enabled(ADVICE_DEFAULT_BRANCH_NAME,
>> _(default_branch_name_advice), ret);
>> +#endif /* WITH_BREAKING_CHANGES */
>> }
>>
>> full_ref = xstrfmt("refs/heads/%s", ret);
>
> Thanks.
next prev parent reply other threads:[~2025-09-05 10:06 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-27 15:24 [PATCH 0/6] breaking changes: switch default initial branch name to "main" Phillip Wood
2025-08-27 15:24 ` [PATCH 1/6] t0018: switch default branch name to main Phillip Wood
2025-08-27 17:21 ` Junio C Hamano
2025-08-28 14:00 ` Phillip Wood
2025-08-28 16:49 ` Junio C Hamano
2025-08-28 21:31 ` brian m. carlson
2025-08-27 15:24 ` [PATCH 2/6] t4013: " Phillip Wood
2025-08-27 15:24 ` [PATCH 3/6] t9902: " Phillip Wood
2025-08-27 15:24 ` [PATCH 4/6] t0613: stop setting default initial branch Phillip Wood
2025-08-27 17:30 ` Junio C Hamano
2025-08-27 15:24 ` [PATCH 5/6] t1403: remove dependency on GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME Phillip Wood
2025-08-27 15:24 ` [PATCH 6/6] breaking-changes: switch default branch to main Phillip Wood
2025-08-27 18:41 ` Junio C Hamano
2025-09-02 11:36 ` Patrick Steinhardt
2025-09-02 15:13 ` Phillip Wood
2025-09-03 4:44 ` Patrick Steinhardt
2025-09-03 9:54 ` Phillip Wood
2025-09-03 11:51 ` Patrick Steinhardt
2025-09-03 18:40 ` Junio C Hamano
2025-09-04 7:09 ` Patrick Steinhardt
2025-09-04 13:30 ` Phillip Wood
2025-09-05 6:07 ` Patrick Steinhardt
2025-09-04 13:27 ` Phillip Wood
2025-08-28 13:12 ` [PATCH 0/6] breaking changes: switch default initial branch name to "main" Johannes Schindelin
2025-09-04 13:21 ` [PATCH v2 0/4] " Phillip Wood
2025-09-04 13:21 ` [PATCH v2 1/4] breaking-changes: switch default branch to main Phillip Wood
2025-09-04 17:40 ` Junio C Hamano
2025-09-05 10:06 ` Phillip Wood [this message]
2025-09-05 15:04 ` Junio C Hamano
2025-09-04 13:21 ` [PATCH v2 2/4] t4013: switch default branch name " Phillip Wood
2025-09-04 13:21 ` [PATCH v2 3/4] t9902: " Phillip Wood
2025-09-04 18:27 ` Junio C Hamano
2025-09-05 10:07 ` Phillip Wood
2025-09-05 12:14 ` Patrick Steinhardt
2025-09-09 9:12 ` Phillip Wood
2025-09-04 13:21 ` [PATCH v2 4/4] t0613: stop setting default initial branch Phillip Wood
2025-09-04 18:35 ` Junio C Hamano
2025-09-05 10:09 ` Phillip Wood
2025-09-04 17:03 ` [PATCH v2 0/4] breaking changes: switch default initial branch name to "main" Junio C Hamano
2025-09-04 18:47 ` Phillip Wood
2025-09-10 15:28 ` [PATCH v3 " Phillip Wood
2025-09-10 15:29 ` [PATCH v3 1/4] breaking-changes: switch default branch to main Phillip Wood
2025-09-10 15:29 ` [PATCH v3 2/4] t4013: switch default branch name " Phillip Wood
2025-09-10 15:29 ` [PATCH v3 3/4] t9902: " Phillip Wood
2025-09-10 15:29 ` [PATCH v3 4/4] t0613: stop setting default initial branch Phillip Wood
2025-09-10 20:41 ` [PATCH v3 0/4] breaking changes: switch default initial branch name to "main" Junio C Hamano
2025-09-17 9:22 ` Junio C Hamano
2025-09-17 12:02 ` Kristoffer Haugsbakk
2025-09-17 15:02 ` Junio C Hamano
2025-09-17 14:53 ` Phillip Wood
2025-09-17 15:21 ` Junio C Hamano
2025-09-17 16:16 ` Junio C Hamano
2025-09-18 15:06 ` Phillip Wood
2025-09-17 16:18 ` [PATCH v2 5/4] initial branch: give hints after switching the default name Junio C Hamano
2025-09-18 15:06 ` Phillip Wood
2025-09-18 18:42 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f43c3e61-01c8-47d8-bf0d-7cfa13cacca5@gmail.com \
--to=phillip.wood123@gmail$(echo .)com \
--cc=Johannes.Schindelin@gmx$(echo .)de \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=huangsen365@gmail$(echo .)com \
--cc=phillip.wood@dunelm$(echo .)org.uk \
--cc=ps@pks$(echo .)im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox