All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Johannes Schindelin <johannes.schindelin@gmx.de>,
	Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH 3/3] init: provide useful advice about init.defaultBranch
Date: Sun, 22 Nov 2020 23:23:26 +0000	[thread overview]
Message-ID: <253d6706e6ab97e71ec012f6de33c75f3e980701.1606087406.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.921.git.git.1606087406.gitgitgadget@gmail.com>

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.

Note: three test cases in Git's test suite want to verify that the
`stderr` output of `git init` is empty. With this patch, that is only
true if `init.defaultBranch` is configured, so let's do exactly that in
those test cases. The same reasoning applies to `test_create_repo()`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 refs.c                        | 13 ++++++++++++-
 t/t0001-init.sh               |  9 ++++++++-
 t/t1510-repo-setup.sh         |  2 +-
 t/t7414-submodule-mistakes.sh |  2 +-
 t/test-lib-functions.sh       |  3 ++-
 5 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/refs.c b/refs.c
index 8df03122d6..61d712ca05 100644
--- a/refs.c
+++ b/refs.c
@@ -562,6 +562,14 @@ void expand_ref_prefix(struct strvec *prefixes, const char *prefix)
 		strvec_pushf(prefixes, *p, len, prefix);
 }
 
+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"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+);
+
 char *repo_default_branch_name(struct repository *r, int quiet)
 {
 	const char *config_key = "init.defaultbranch";
@@ -574,8 +582,11 @@ char *repo_default_branch_name(struct repository *r, int quiet)
 	else if (repo_config_get_string(r, config_key, &ret) < 0)
 		die(_("could not retrieve `%s`"), config_display_key);
 
-	if (!ret)
+	if (!ret) {
 		ret = xstrdup("master");
+		if (!quiet)
+			advise(_(default_branch_name_advice), ret);
+	}
 
 	full_ref = xstrfmt("refs/heads/%s", ret);
 	if (check_refname_format(full_ref, 0))
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 69a320489f..754dab3bab 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -163,7 +163,7 @@ test_expect_success 'reinit' '
 	(
 		mkdir again &&
 		cd again &&
-		git init >out1 2>err1 &&
+		git -c init.defaultBranch=initial init >out1 2>err1 &&
 		git init >out2 2>err2
 	) &&
 	test_i18ngrep "Initialized empty" again/out1 &&
@@ -558,6 +558,13 @@ test_expect_success 'overridden default initial branch name (config)' '
 	grep nmb actual
 '
 
+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
+'
+
 test_expect_success 'overridden default main branch name (env)' '
 	test_config_global init.defaultBranch nmb &&
 	GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env &&
diff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh
index 9974457f56..5189a520a2 100755
--- a/t/t1510-repo-setup.sh
+++ b/t/t1510-repo-setup.sh
@@ -79,7 +79,7 @@ setup_repo () {
 	name=$1 worktreecfg=$2 gitfile=$3 barecfg=$4 &&
 	sane_unset GIT_DIR GIT_WORK_TREE &&
 
-	git init "$name" &&
+	git -c init.defaultBranch=repo init "$name" &&
 	maybe_config "$name/.git/config" core.worktree "$worktreecfg" &&
 	maybe_config "$name/.git/config" core.bare "$barecfg" &&
 	mkdir -p "$name/sub/sub" &&
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
 '
 
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 \
 			"--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
-- 
gitgitgadget

  parent reply	other threads:[~2020-11-22 23:23 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-22 23:23 [PATCH 0/3] Add helpful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-11-22 23:23 ` [PATCH 1/3] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-11-22 23:40   ` Junio C Hamano
2020-11-23 12:07     ` Johannes Schindelin
2020-11-22 23:23 ` [PATCH 2/3] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-11-22 23:23 ` Johannes Schindelin via GitGitGadget [this message]
2020-11-22 23:53   ` [PATCH 3/3] init: provide useful advice about init.defaultBranch Junio C Hamano
2020-11-23  2:07     ` Junio C Hamano
2020-11-23 12:28       ` Johannes Schindelin
2020-11-23 18:40         ` Junio C Hamano
2020-11-23 20:46           ` Johannes Schindelin
2020-11-23 21:28             ` Junio C Hamano
2020-11-23 12:26     ` Johannes Schindelin
2020-11-23 12:49   ` Philip Oakley
2020-11-23 20:47     ` Johannes Schindelin
2020-11-23 23:20 ` [PATCH v2 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-11-23 23:20   ` [PATCH v2 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-11-23 23:20   ` [PATCH v2 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-11-23 23:45     ` Junio C Hamano
2020-11-24  5:47       ` Johannes Schindelin
2020-11-24 20:14         ` Junio C Hamano
2020-11-23 23:20   ` [PATCH v2 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-11-23 23:20   ` [PATCH v2 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-11-23 23:53     ` Junio C Hamano
2020-11-24  5:57       ` Johannes Schindelin
2020-11-24 20:53         ` Junio C Hamano
2020-12-09 14:47           ` Johannes Schindelin
2020-12-09 22:15             ` Junio C Hamano
2020-12-10 12:12               ` Johannes Schindelin
2020-12-10 23:32                 ` Junio C Hamano
2020-12-10  0:40             ` Felipe Contreras
2020-11-24 15:07   ` [PATCH v3 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-11-24 15:07     ` [PATCH v3 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-11-24 15:07     ` [PATCH v3 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-11-24 15:07     ` [PATCH v3 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-11-24 15:07     ` [PATCH v3 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-12-10 21:58     ` [PATCH v4 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-12-10 21:58       ` [PATCH v4 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-12-11  0:24         ` Felipe Contreras
2020-12-11  5:47           ` Junio C Hamano
2020-12-11  6:26             ` Felipe Contreras
2020-12-11  5:59           ` Junio C Hamano
2020-12-10 21:58       ` [PATCH v4 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-12-10 21:58       ` [PATCH v4 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-12-10 21:58       ` [PATCH v4 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2020-12-11  0:15         ` Felipe Contreras
2020-12-11  1:22           ` Junio C Hamano
2020-12-11  0:47             ` Johannes Schindelin
2020-12-11  2:00             ` Felipe Contreras
2020-12-11 11:36       ` [PATCH v5 0/4] Add helpful " Johannes Schindelin via GitGitGadget
2020-12-11 11:36         ` [PATCH v5 1/4] init: document `init.defaultBranch` better Johannes Schindelin via GitGitGadget
2020-12-11 11:36         ` [PATCH v5 2/4] branch -m: allow renaming a yet-unborn branch Johannes Schindelin via GitGitGadget
2020-12-11 11:36         ` [PATCH v5 3/4] get_default_branch_name(): prepare for showing some advice Johannes Schindelin via GitGitGadget
2020-12-11 11:36         ` [PATCH v5 4/4] init: provide useful advice about init.defaultBranch Johannes Schindelin via GitGitGadget
2021-02-02 21:24           ` SZEDER Gábor
2021-02-02 22:25             ` Junio C Hamano
2021-02-03  5:20               ` SZEDER Gábor

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=253d6706e6ab97e71ec012f6de33c75f3e980701.1606087406.git.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=johannes.schindelin@gmx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.