]> git.ipfire.org Git - thirdparty/git.git/commitdiff
advice: allow disabling default branch name advice
authorJustin Tobler <jltobler@gmail.com>
Tue, 25 Mar 2025 00:51:48 +0000 (19:51 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 25 Mar 2025 23:09:28 +0000 (16:09 -0700)
The default branch name advice message is displayed when
`repo_default_branch_name()` is invoked and the `init.defaultBranch`
config is not set. In this scenario, the advice message is always shown
even if the `--no-advice` option is used.

Adapt `repo_default_branch_name()` to allow the default branch name
advice message to be disabled with the `--no-advice` option and
corresponding configuration.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
Acked-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
advice.c
advice.h
refs.c
t/t0001-init.sh

index 1df43b7536fabe4a6d8e3a28e27e764081e74dfd..e5f0ff844917ec5927d15c10a07cad873598d545 100644 (file)
--- a/advice.c
+++ b/advice.c
@@ -51,6 +51,7 @@ static struct {
        [ADVICE_AM_WORK_DIR]                            = { "amWorkDir" },
        [ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME]  = { "checkoutAmbiguousRemoteBranchName" },
        [ADVICE_COMMIT_BEFORE_MERGE]                    = { "commitBeforeMerge" },
+       [ADVICE_DEFAULT_BRANCH_NAME]                    = { "defaultBranchName" },
        [ADVICE_DETACHED_HEAD]                          = { "detachedHead" },
        [ADVICE_DIVERGING]                              = { "diverging" },
        [ADVICE_FETCH_SET_HEAD_WARN]                    = { "fetchRemoteHEADWarn" },
index d233cfc693c72629d80d20298572054f5726cd6d..727dcecf4a3ee0d827f5efe5049479c46f3c247b 100644 (file)
--- a/advice.h
+++ b/advice.h
@@ -18,6 +18,7 @@ enum advice_type {
        ADVICE_AM_WORK_DIR,
        ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME,
        ADVICE_COMMIT_BEFORE_MERGE,
+       ADVICE_DEFAULT_BRANCH_NAME,
        ADVICE_DETACHED_HEAD,
        ADVICE_DIVERGING,
        ADVICE_FETCH_SET_HEAD_WARN,
diff --git a/refs.c b/refs.c
index 118465271d7275e72c8b0adc1cdd1a0eb5a7716c..bf9a40d6afdd848171ca33f90f00e3cfc158c6cb 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -664,7 +664,8 @@ char *repo_default_branch_name(struct repository *r, int quiet)
        if (!ret) {
                ret = xstrdup("master");
                if (!quiet)
-                       advise(_(default_branch_name_advice), ret);
+                       advise_if_enabled(ADVICE_DEFAULT_BRANCH_NAME,
+                                         _(default_branch_name_advice), ret);
        }
 
        full_ref = xstrfmt("refs/heads/%s", ret);
index c49d9e0d382990cc87daec8ba4f03f1bc7f956cd..f11a40811f243a396f1e85128e6e33677defad6b 100755 (executable)
@@ -830,6 +830,14 @@ test_expect_success 'advice on unconfigured init.defaultBranch' '
        test_grep "<YELLOW>hint: " decoded
 '
 
+test_expect_success 'advice on unconfigured init.defaultBranch disabled' '
+       test_when_finished "rm -rf no-advice" &&
+
+       GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \
+               git -c advice.defaultBranchName=false init no-advice 2>err &&
+       test_grep ! "hint: " err
+'
+
 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 &&