advice: allow disabling default branch name advice

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>
maint
Justin Tobler 2025-03-24 19:51:48 -05:00 committed by Junio C Hamano
parent c039a46e99
commit ec0f362e86
4 changed files with 12 additions and 1 deletions

View File

@ -51,6 +51,7 @@ static struct {
[ADVICE_AM_WORK_DIR] = { "amWorkDir" }, [ADVICE_AM_WORK_DIR] = { "amWorkDir" },
[ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] = { "checkoutAmbiguousRemoteBranchName" }, [ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] = { "checkoutAmbiguousRemoteBranchName" },
[ADVICE_COMMIT_BEFORE_MERGE] = { "commitBeforeMerge" }, [ADVICE_COMMIT_BEFORE_MERGE] = { "commitBeforeMerge" },
[ADVICE_DEFAULT_BRANCH_NAME] = { "defaultBranchName" },
[ADVICE_DETACHED_HEAD] = { "detachedHead" }, [ADVICE_DETACHED_HEAD] = { "detachedHead" },
[ADVICE_DIVERGING] = { "diverging" }, [ADVICE_DIVERGING] = { "diverging" },
[ADVICE_FETCH_SET_HEAD_WARN] = { "fetchRemoteHEADWarn" }, [ADVICE_FETCH_SET_HEAD_WARN] = { "fetchRemoteHEADWarn" },

View File

@ -18,6 +18,7 @@ enum advice_type {
ADVICE_AM_WORK_DIR, ADVICE_AM_WORK_DIR,
ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME, ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME,
ADVICE_COMMIT_BEFORE_MERGE, ADVICE_COMMIT_BEFORE_MERGE,
ADVICE_DEFAULT_BRANCH_NAME,
ADVICE_DETACHED_HEAD, ADVICE_DETACHED_HEAD,
ADVICE_DIVERGING, ADVICE_DIVERGING,
ADVICE_FETCH_SET_HEAD_WARN, ADVICE_FETCH_SET_HEAD_WARN,

3
refs.c
View File

@ -664,7 +664,8 @@ char *repo_default_branch_name(struct repository *r, int quiet)
if (!ret) { if (!ret) {
ret = xstrdup("master"); ret = xstrdup("master");
if (!quiet) 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); full_ref = xstrfmt("refs/heads/%s", ret);

View File

@ -830,6 +830,14 @@ test_expect_success 'advice on unconfigured init.defaultBranch' '
test_grep "<YELLOW>hint: " decoded 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_expect_success 'overridden default main branch name (env)' '
test_config_global init.defaultBranch nmb && test_config_global init.defaultBranch nmb &&
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env && GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env &&