From 6cbc556c76b0f2d160115c564bb11b837637a9fb Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 14 Sep 2026 15:01:49 -0700 Subject: [PATCH] advice: give cut-and-pasteable advice to squelch Advice messages that the advise_if_enabled() helper emits tell the user how to squelch a particular piece of advice by setting a configuration variable. The message it gives says: hint: Disable this message with "git config set advice.FOO false" However, cutting and pasting the given hint would set the configuration variable in the per-repository configuration file (which is the default behavior for 'git config set'). As the user most likely sets it after seeing advice and understanding its ramifications, the choice of squelching or continuing to see the advice message is better controlled per-user, not per-repository. In addition, some advice, such as advice.defaultBranchName, is applicable only once before a new repository is created, so setting it in the per-repository configuration file is far too late. Add '--global' to the 'git config set' command line so that the configuration is set for the user rather than per repository. Initial-work-by: Vsevolod Myalitsin Helped-by: Jeff King Signed-off-by: Junio C Hamano --- advice.c | 2 +- t/t0018-advice.sh | 2 +- t/t3200-branch.sh | 2 +- t/t3404-rebase-interactive.sh | 6 +++--- t/t3501-revert-cherry-pick.sh | 2 +- t/t3507-cherry-pick-conflict.sh | 4 ++-- t/t3602-rm-sparse-checkout.sh | 2 +- t/t3700-add.sh | 6 +++--- t/t3705-add-sparse-checkout.sh | 2 +- t/t7002-mv-sparse-checkout.sh | 4 ++-- t/t7004-tag.sh | 2 +- t/t7400-submodule-basic.sh | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/advice.c b/advice.c index 63bf8b0c5f..d81afc80d1 100644 --- a/advice.c +++ b/advice.c @@ -96,7 +96,7 @@ static struct { static const char turn_off_instructions[] = N_("\n" - "Disable this message with \"git config set advice.%s false\""); + "Disable this message with \"git config set --global advice.%s false\""); static void vadvise(const char *advice, int display_instructions, const char *key, va_list params) diff --git a/t/t0018-advice.sh b/t/t0018-advice.sh index f68e08d0b1..8f05b5ae6c 100755 --- a/t/t0018-advice.sh +++ b/t/t0018-advice.sh @@ -10,7 +10,7 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME test_expect_success 'advice should be printed when config variable is unset' ' cat >expect <<-\EOF && hint: This is a piece of advice - hint: Disable this message with "git config set advice.nestedTag false" + hint: Disable this message with "git config set --global advice.nestedTag false" EOF test-tool advise "This is a piece of advice" 2>actual && test_cmp expect actual diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index cdb6c6a634..0d7d9d3957 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -1751,7 +1751,7 @@ test_expect_success 'errors if given a bad branch name' ' cat <<-EOF >expect && fatal: ${SQ}foo..bar${SQ} is not a valid branch name hint: See ${SQ}git help check-ref-format${SQ} - hint: Disable this message with "git config set advice.refSyntax false" + hint: Disable this message with "git config set --global advice.refSyntax false" EOF test_must_fail git branch foo..bar >actual 2>&1 && test_cmp expect actual diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index ff11abb2f2..b3ee96f560 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -2341,20 +2341,20 @@ test_expect_success 'non-merge commands reject merge commits' ' error: ${SQ}pick${SQ} does not accept merge commits hint: ${SQ}pick${SQ} does not take a merge commit. If you wanted to hint: replay the merge, use ${SQ}merge -C${SQ} on the commit. - hint: Disable this message with "git config set advice.rebaseTodoError false" + hint: Disable this message with "git config set --global advice.rebaseTodoError false" error: invalid line 1: pick $oid error: ${SQ}reword${SQ} does not accept merge commits hint: ${SQ}reword${SQ} does not take a merge commit. If you wanted to hint: replay the merge and reword the commit message, use hint: ${SQ}merge -c${SQ} on the commit - hint: Disable this message with "git config set advice.rebaseTodoError false" + hint: Disable this message with "git config set --global advice.rebaseTodoError false" error: invalid line 2: reword $oid error: ${SQ}edit${SQ} does not accept merge commits hint: ${SQ}edit${SQ} does not take a merge commit. If you wanted to hint: replay the merge, use ${SQ}merge -C${SQ} on the commit, and then hint: ${SQ}break${SQ} to give the control back to you so that you can hint: do ${SQ}git commit --amend && git rebase --continue${SQ}. - hint: Disable this message with "git config set advice.rebaseTodoError false" + hint: Disable this message with "git config set --global advice.rebaseTodoError false" error: invalid line 3: edit $oid error: cannot squash merge commit into another commit error: invalid line 4: fixup $oid diff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh index 939e7a16a6..2abbf071ce 100755 --- a/t/t3501-revert-cherry-pick.sh +++ b/t/t3501-revert-cherry-pick.sh @@ -177,7 +177,7 @@ test_expect_success 'advice from failed revert' ' hint: You can instead skip this commit with "git revert --skip". hint: To abort and get back to the state before "git revert", hint: run "git revert --abort". - hint: Disable this message with "git config set advice.mergeConflict false" + hint: Disable this message with "git config set --global advice.mergeConflict false" EOF test_commit --append --no-tag "double-add dream" dream dream && test_must_fail git revert HEAD^ 2>actual && diff --git a/t/t3507-cherry-pick-conflict.sh b/t/t3507-cherry-pick-conflict.sh index 44596cb1e8..de5c073e64 100755 --- a/t/t3507-cherry-pick-conflict.sh +++ b/t/t3507-cherry-pick-conflict.sh @@ -60,7 +60,7 @@ test_expect_success 'advice from failed cherry-pick' ' hint: You can instead skip this commit with "git cherry-pick --skip". hint: To abort and get back to the state before "git cherry-pick", hint: run "git cherry-pick --abort". - hint: Disable this message with "git config set advice.mergeConflict false" + hint: Disable this message with "git config set --global advice.mergeConflict false" EOF test_must_fail git cherry-pick picked 2>actual && @@ -75,7 +75,7 @@ test_expect_success 'advice from failed cherry-pick --no-commit' " error: could not apply \$picked... picked hint: after resolving the conflicts, mark the corrected paths hint: with 'git add ' or 'git rm ' - hint: Disable this message with \"git config set advice.mergeConflict false\" + hint: Disable this message with \"git config set --global advice.mergeConflict false\" EOF test_must_fail git cherry-pick --no-commit picked 2>actual && diff --git a/t/t3602-rm-sparse-checkout.sh b/t/t3602-rm-sparse-checkout.sh index 252df28bbf..bccb31a5a1 100755 --- a/t/t3602-rm-sparse-checkout.sh +++ b/t/t3602-rm-sparse-checkout.sh @@ -20,7 +20,7 @@ test_expect_success 'setup' " hint: If you intend to update such entries, try one of the following: hint: * Use the --sparse option. hint: * Disable or modify the sparsity rules. - hint: Disable this message with \"git config set advice.updateSparsePath false\" + hint: Disable this message with \"git config set --global advice.updateSparsePath false\" EOF echo b | cat sparse_error_header - >sparse_entry_b_error && diff --git a/t/t3700-add.sh b/t/t3700-add.sh index 2947bf9a6b..59e48482a2 100755 --- a/t/t3700-add.sh +++ b/t/t3700-add.sh @@ -31,7 +31,7 @@ test_expect_success 'Test with no pathspecs' ' cat >expect <<-EOF && Nothing specified, nothing added. hint: Maybe you wanted to say ${SQ}git add .${SQ}? - hint: Disable this message with "git config set advice.addEmptyPathspec false" + hint: Disable this message with "git config set --global advice.addEmptyPathspec false" EOF git add 2>actual && test_cmp expect actual @@ -386,7 +386,7 @@ test_expect_success '"git add" a embedded repository' ' hint: git rm --cached inner1 hint: hint: See "git help submodule" for more information. - hint: Disable this message with "git config set advice.addEmbeddedRepo false" + hint: Disable this message with "git config set --global advice.addEmbeddedRepo false" warning: adding embedded git repository: inner2 EOF test_cmp expect actual @@ -425,7 +425,7 @@ cat >expect.err <<\EOF The following paths are ignored by one of your .gitignore files: ignored-file hint: Use -f if you really want to add them. -hint: Disable this message with "git config set advice.addIgnoredFile false" +hint: Disable this message with "git config set --global advice.addIgnoredFile false" EOF cat >expect.out <<\EOF add 'track-this' diff --git a/t/t3705-add-sparse-checkout.sh b/t/t3705-add-sparse-checkout.sh index 975f9218b0..2e97e3c003 100755 --- a/t/t3705-add-sparse-checkout.sh +++ b/t/t3705-add-sparse-checkout.sh @@ -54,7 +54,7 @@ test_expect_success 'setup' " hint: If you intend to update such entries, try one of the following: hint: * Use the --sparse option. hint: * Disable or modify the sparsity rules. - hint: Disable this message with \"git config set advice.updateSparsePath false\" + hint: Disable this message with \"git config set --global advice.updateSparsePath false\" EOF echo sparse_entry | cat sparse_error_header - >sparse_entry_error && diff --git a/t/t7002-mv-sparse-checkout.sh b/t/t7002-mv-sparse-checkout.sh index 9c0e82ba31..666317fdf9 100755 --- a/t/t7002-mv-sparse-checkout.sh +++ b/t/t7002-mv-sparse-checkout.sh @@ -32,7 +32,7 @@ test_expect_success 'setup' " hint: If you intend to update such entries, try one of the following: hint: * Use the --sparse option. hint: * Disable or modify the sparsity rules. - hint: Disable this message with \"git config set advice.updateSparsePath false\" + hint: Disable this message with \"git config set --global advice.updateSparsePath false\" EOF cat >dirty_error_header <<-EOF && @@ -45,7 +45,7 @@ test_expect_success 'setup' " hint: To correct the sparsity of these paths, do the following: hint: * Use \"git add --sparse \" to update the index hint: * Use \"git sparse-checkout reapply\" to apply the sparsity rules - hint: Disable this message with \"git config set advice.updateSparsePath false\" + hint: Disable this message with \"git config set --global advice.updateSparsePath false\" EOF " diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh index 8c795d7218..49cdb6fdb0 100755 --- a/t/t7004-tag.sh +++ b/t/t7004-tag.sh @@ -1887,7 +1887,7 @@ test_expect_success 'recursive tagging should give advice' ' hint: already a tag. If you meant to tag the object that it points to, use: hint: hint: git tag -f nested annotated-v4.0^{} - hint: Disable this message with "git config set advice.nestedTag false" + hint: Disable this message with "git config set --global advice.nestedTag false" EOF git tag -m nested nested annotated-v4.0 2>actual && test_cmp expect actual diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index eefdecb0bd..36ff5b9546 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -231,7 +231,7 @@ test_expect_success 'submodule add to .gitignored path fails' ' The following paths are ignored by one of your .gitignore files: submod hint: Use -f if you really want to add them. - hint: Disable this message with "git config set advice.addIgnoredFile false" + hint: Disable this message with "git config set --global advice.addIgnoredFile false" EOF # Does not use test_commit due to the ignore echo "*" > .gitignore &&