From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Cc: Phillip Wood <phillip.wood123@gmail.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Wing Huang <huangsen365@gmail.com>,
Patrick Steinhardt <ps@pks.im>
Subject: [PATCH v2 5/4] initial branch: give hints after switching the default name
Date: Wed, 17 Sep 2025 09:18:28 -0700 [thread overview]
Message-ID: <xmqqikhhdpd7.fsf_-_@gitster.g> (raw)
In-Reply-To: <cover.1757518141.git.phillip.wood@dunelm.org.uk> (Phillip Wood's message of "Wed, 10 Sep 2025 16:28:59 +0100")
It is likely that those who came to Git after 3.0 switched the
default initial branch name to 'main' would still try to follow
tutorials that were written before 3.0 happened and with the
assumption that the tool would call the initial branch 'master'.
To help these new users after 3.0 boundary, let's retain one part of
the hint we will be giving before the default changes, namely, how
to rename the branch an unconfigured Git has created just once.
We do this without telling them how to permanently configure the
default name of the initial branch, and that design choice is very
much deliberate. The whole point of switching the default name was
because we did not want to force individual users to configure their
default branch name but while the hard wired default was 'master',
they _had_ to configure it away from 'master' in order to conform to
the recent norm, and a hint that tells them how to do so is useful.
But once the default is renamed to 'main', that no longer is true.
A narrower audience who are new users that follow an instruction
that assumes the initial branch name is 'master' would only need to
learn "here is how to change the branch name to match the tutorial
you are following in the repository you created for practice", and
"here is how you keep creating repositories with the first branch
with a name everybody hates" is unnecessary.
It also needs to be noted that the advise token to squelch the
message is the same advice.defaultBranchName as before, which is
also very much deliberate. The users who do have that configured
are those who _have_ been using Git since before 3.0, and they are
not the target audience for the new advice message. Reusing the
same advise token ensures that they do not have to turn the message
off.
Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
* With simplified tests, thanks to Phillip's help.
advice.c | 2 --
advice.h | 4 +---
refs.c | 12 ++++++++++--
t/test-lib.sh | 10 +++++++---
4 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/advice.c b/advice.c
index 48c49ee414..e5f0ff8449 100644
--- a/advice.c
+++ b/advice.c
@@ -51,9 +51,7 @@ 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 fc1dc87204..8def280688 100644
--- a/advice.h
+++ b/advice.h
@@ -18,9 +18,7 @@ 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_DEFAULT_BRANCH_NAME, /* To be retired sometime after Git 3.0 */
ADVICE_DETACHED_HEAD,
ADVICE_DIVERGING,
ADVICE_FETCH_SET_HEAD_WARN,
diff --git a/refs.c b/refs.c
index 149a8d1cec..f15366bfce 100644
--- a/refs.c
+++ b/refs.c
@@ -641,9 +641,17 @@ static const char default_branch_name_advice[] = N_(
"\n"
"\tgit branch -m <name>\n"
);
+#else
+static const char default_branch_name_advice[] = N_(
+"Using '%s' as the name for the initial branch since Git 3.0.\n"
+"If you expected Git to create 'master', the just-created\n"
+"branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m master\n"
+);
#endif /* WITH_BREAKING_CHANGES */
-char *repo_default_branch_name(struct repository *r, MAYBE_UNUSED int quiet)
+char *repo_default_branch_name(struct repository *r, int quiet)
{
const char *config_key = "init.defaultbranch";
const char *config_display_key = "init.defaultBranch";
@@ -660,10 +668,10 @@ char *repo_default_branch_name(struct repository *r, MAYBE_UNUSED int quiet)
ret = xstrdup("main");
#else
ret = xstrdup("master");
+#endif /* WITH_BREAKING_CHANGES */
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);
diff --git a/t/test-lib.sh b/t/test-lib.sh
index b191954c3c..562f950fb0 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -127,13 +127,17 @@ then
export GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS
fi
+# Explicitly set the default branch name for testing, to squelch hints
+# from "git init" during the transition period. Should be removed
+# after we decide to remove ADVICE_DEFAULT_BRANCH_NAME
if test -z "$WITH_BREAKING_CHANGES"
then
- # Explicitly set the default branch name for testing, to avoid the
- # transitory "git init" warning under --verbose.
: ${GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME:=master}
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+else
+ : ${GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME:=main}
fi
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
################################################################
# It appears that people try to run tests without building...
--
2.51.0-382-g6e76cf14a4
next prev parent reply other threads:[~2025-09-17 16:18 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
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 ` Junio C Hamano [this message]
2025-09-18 15:06 ` [PATCH v2 5/4] initial branch: give hints after switching the default name 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=xmqqikhhdpd7.fsf_-_@gitster.g \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=huangsen365@gmail.com \
--cc=phillip.wood123@gmail.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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;
as well as URLs for NNTP newsgroup(s).