Using advise_if_enabled() to display an advice will automatically include instructions on how to disable the advice, along with the main advice: hint: use --reapply-cherry-picks to include skipped commits hint: Disable this message with "git config advice.skippedCherryPicks false" This can become distracting or noisy over time, while the user may still want to receive the main advice. Let's have a switch to allow disabling this automatic advice. Signed-off-by: Rubén Justo <rjusto@xxxxxxxxx> --- advice.c | 3 ++- advice.h | 3 ++- t/t0018-advice.sh | 8 ++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/advice.c b/advice.c index 50c79443ba..fa203f8806 100644 --- a/advice.c +++ b/advice.c @@ -79,6 +79,7 @@ static struct { [ADVICE_UPDATE_SPARSE_PATH] = { "updateSparsePath", 1 }, [ADVICE_WAITING_FOR_EDITOR] = { "waitingForEditor", 1 }, [ADVICE_WORKTREE_ADD_ORPHAN] = { "worktreeAddOrphan", 1 }, + [ADVICE_ADVICE_OFF] = { "adviceOff", 1 }, }; static const char turn_off_instructions[] = @@ -93,7 +94,7 @@ static void vadvise(const char *advice, int display_instructions, strbuf_vaddf(&buf, advice, params); - if (display_instructions) + if (display_instructions && advice_enabled(ADVICE_ADVICE_OFF)) strbuf_addf(&buf, turn_off_instructions, key); for (cp = buf.buf; *cp; cp = np) { diff --git a/advice.h b/advice.h index 2affbe1426..1f2eef034e 100644 --- a/advice.h +++ b/advice.h @@ -10,7 +10,7 @@ struct string_list; * Add the new config variable to Documentation/config/advice.txt. * Call advise_if_enabled to print your advice. */ - enum advice_type { +enum advice_type { ADVICE_ADD_EMBEDDED_REPO, ADVICE_ADD_EMPTY_PATHSPEC, ADVICE_ADD_IGNORED_FILE, @@ -50,6 +50,7 @@ struct string_list; ADVICE_WAITING_FOR_EDITOR, ADVICE_SKIPPED_CHERRY_PICKS, ADVICE_WORKTREE_ADD_ORPHAN, + ADVICE_ADVICE_OFF, }; int git_default_advice_config(const char *var, const char *value); diff --git a/t/t0018-advice.sh b/t/t0018-advice.sh index c13057a4ca..0b6a8b4a10 100755 --- a/t/t0018-advice.sh +++ b/t/t0018-advice.sh @@ -30,4 +30,12 @@ test_expect_success 'advice should not be printed when config variable is set to test_must_be_empty actual ' +test_expect_success 'advice without the instructions to disable it' ' + cat >expect <<-\EOF && + hint: This is a piece of advice + EOF + test-tool -c advice.adviceOff=0 advise "This is a piece of advice" 2>actual && + test_cmp expect actual +' + test_done -- 2.42.0