All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"Ben Boeckel" <mathstuf@gmail.com>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"Heba Waly" <heba.waly@gmail.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH 4/5] advice API: revamp the API, again
Date: Mon,  4 Oct 2021 03:58:23 +0200	[thread overview]
Message-ID: <patch-4.5-25f6f5cd018-20211004T015432Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-0.5-00000000000-20211004T015432Z-avarab@gmail.com>

Follow-up b3b18d16213 (advice: revamp advise API, 2020-03-02) and
revamp the declaration of the advice variables to:

 * Make it trivial to grep for them, by giving them the "advice."
   prefix explicitly, which also saves us from stripping it off
   during config parsing.

 * All of the advice is enabled by default, so we can do this more
   succinctly by having a "disabled" slot, instead of "enabled", and
   then rely on the compiler to implicitly zero out the struct.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 advice.c | 81 +++++++++++++++++++++++++++-----------------------------
 1 file changed, 39 insertions(+), 42 deletions(-)

diff --git a/advice.c b/advice.c
index b395bc7d187..f7cedac7549 100644
--- a/advice.c
+++ b/advice.c
@@ -33,46 +33,46 @@ static const char *advise_get_color(enum color_advice ix)
 
 static struct {
 	const char *key;
-	int enabled;
+	int disabled;
 } advice_setting[] = {
-	[ADVICE_ADD_EMBEDDED_REPO]			= { "addEmbeddedRepo", 1 },
-	[ADVICE_ADD_EMPTY_PATHSPEC]			= { "addEmptyPathspec", 1 },
-	[ADVICE_ADD_IGNORED_FILE]			= { "addIgnoredFile", 1 },
-	[ADVICE_AM_WORK_DIR] 				= { "amWorkDir", 1 },
-	[ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] 	= { "checkoutAmbiguousRemoteBranchName", 1 },
-	[ADVICE_COMMIT_BEFORE_MERGE]			= { "commitBeforeMerge", 1 },
-	[ADVICE_DETACHED_HEAD]				= { "detachedHead", 1 },
-	[ADVICE_FETCH_SHOW_FORCED_UPDATES]		= { "fetchShowForcedUpdates", 1 },
-	[ADVICE_GRAFT_FILE_DEPRECATED]			= { "graftFileDeprecated", 1 },
-	[ADVICE_IGNORED_HOOK]				= { "ignoredHook", 1 },
-	[ADVICE_IMPLICIT_IDENTITY]			= { "implicitIdentity", 1 },
-	[ADVICE_NESTED_TAG]				= { "nestedTag", 1 },
-	[ADVICE_OBJECT_NAME_WARNING]			= { "objectNameWarning", 1 },
-	[ADVICE_PUSH_ALREADY_EXISTS]			= { "pushAlreadyExists", 1 },
-	[ADVICE_PUSH_FETCH_FIRST]			= { "pushFetchFirst", 1 },
-	[ADVICE_PUSH_NEEDS_FORCE]			= { "pushNeedsForce", 1 },
-	[ADVICE_PUSH_REF_NEEDS_UPDATE]			= { "pushRefNeedsUpdate", 1 },
-	[ADVICE_PUSH_NON_FF_CURRENT]			= { "pushNonFFCurrent", 1 },
-	[ADVICE_PUSH_NON_FF_MATCHING]			= { "pushNonFFMatching", 1 },
-	[ADVICE_PUSH_UNQUALIFIED_REF_NAME]		= { "pushUnqualifiedRefName", 1 },
-	[ADVICE_PUSH_UPDATE_REJECTED]			= { "pushUpdateRejected", 1 },
-	[ADVICE_RESET_QUIET_WARNING]			= { "resetQuiet", 1 },
-	[ADVICE_RESOLVE_CONFLICT]			= { "resolveConflict", 1 },
-	[ADVICE_RM_HINTS]				= { "rmHints", 1 },
-	[ADVICE_SEQUENCER_IN_USE]			= { "sequencerInUse", 1 },
-	[ADVICE_SET_UPSTREAM_FAILURE]			= { "setUpstreamFailure", 1 },
-	[ADVICE_SKIPPED_CHERRY_PICKS]			= { "skippedCherryPicks", 1 },
-	[ADVICE_STATUS_AHEAD_BEHIND_WARNING]		= { "statusAheadBehindWarning", 1 },
-	[ADVICE_STATUS_HINTS]				= { "statusHints", 1 },
-	[ADVICE_STATUS_U_OPTION]			= { "statusUoption", 1 },
-	[ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE] = { "submoduleAlternateErrorStrategyDie", 1 },
-	[ADVICE_UPDATE_SPARSE_PATH]			= { "updateSparsePath", 1 },
-	[ADVICE_WAITING_FOR_EDITOR]			= { "waitingForEditor", 1 },
+	[ADVICE_ADD_EMBEDDED_REPO]			= { "advice.addEmbeddedRepo" },
+	[ADVICE_ADD_EMPTY_PATHSPEC]			= { "advice.addEmptyPathspec" },
+	[ADVICE_ADD_IGNORED_FILE]			= { "advice.addIgnoredFile" },
+	[ADVICE_AM_WORK_DIR] 				= { "advice.amWorkDir" },
+	[ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] 	= { "advice.checkoutAmbiguousRemoteBranchName" },
+	[ADVICE_COMMIT_BEFORE_MERGE]			= { "advice.commitBeforeMerge" },
+	[ADVICE_DETACHED_HEAD]				= { "advice.detachedHead" },
+	[ADVICE_FETCH_SHOW_FORCED_UPDATES]		= { "advice.fetchShowForcedUpdates" },
+	[ADVICE_GRAFT_FILE_DEPRECATED]			= { "advice.graftFileDeprecated" },
+	[ADVICE_IGNORED_HOOK]				= { "advice.ignoredHook" },
+	[ADVICE_IMPLICIT_IDENTITY]			= { "advice.implicitIdentity" },
+	[ADVICE_NESTED_TAG]				= { "advice.nestedTag" },
+	[ADVICE_OBJECT_NAME_WARNING]			= { "advice.objectNameWarning" },
+	[ADVICE_PUSH_ALREADY_EXISTS]			= { "advice.pushAlreadyExists" },
+	[ADVICE_PUSH_FETCH_FIRST]			= { "advice.pushFetchFirst" },
+	[ADVICE_PUSH_NEEDS_FORCE]			= { "advice.pushNeedsForce" },
+	[ADVICE_PUSH_REF_NEEDS_UPDATE]			= { "advice.pushRefNeedsUpdate" },
+	[ADVICE_PUSH_NON_FF_CURRENT]			= { "advice.pushNonFFCurrent" },
+	[ADVICE_PUSH_NON_FF_MATCHING]			= { "advice.pushNonFFMatching" },
+	[ADVICE_PUSH_UNQUALIFIED_REF_NAME]		= { "advice.pushUnqualifiedRefName" },
+	[ADVICE_PUSH_UPDATE_REJECTED]			= { "advice.pushUpdateRejected" },
+	[ADVICE_RESET_QUIET_WARNING]			= { "advice.resetQuiet" },
+	[ADVICE_RESOLVE_CONFLICT]			= { "advice.resolveConflict" },
+	[ADVICE_RM_HINTS]				= { "advice.rmHints" },
+	[ADVICE_SEQUENCER_IN_USE]			= { "advice.sequencerInUse" },
+	[ADVICE_SET_UPSTREAM_FAILURE]			= { "advice.setUpstreamFailure" },
+	[ADVICE_SKIPPED_CHERRY_PICKS]			= { "advice.skippedCherryPicks" },
+	[ADVICE_STATUS_AHEAD_BEHIND_WARNING]		= { "advice.statusAheadBehindWarning" },
+	[ADVICE_STATUS_HINTS]				= { "advice.statusHints" },
+	[ADVICE_STATUS_U_OPTION]			= { "advice.statusUoption" },
+	[ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE] = { "advice.submoduleAlternateErrorStrategyDie" },
+	[ADVICE_UPDATE_SPARSE_PATH]			= { "advice.updateSparsePath" },
+	[ADVICE_WAITING_FOR_EDITOR]			= { "advice.waitingForEditor" },
 };
 
 static const char turn_off_instructions[] =
 N_("\n"
-   "Disable this message with \"git config advice.%s false\"");
+   "Disable this message with \"git config %s false\"");
 
 static void vadvise(const char *advice, int display_instructions,
 		    const char *key, va_list params)
@@ -112,7 +112,7 @@ void advise(const char *advice, ...)
 
 int advice_enabled(enum advice_type type)
 {
-	return advice_setting[type].enabled;
+	return !advice_setting[type].disabled;
 }
 
 void advise_if_enabled(enum advice_type type, const char *advice, ...)
@@ -129,7 +129,7 @@ void advise_if_enabled(enum advice_type type, const char *advice, ...)
 
 int git_default_advice_config(const char *var, const char *value)
 {
-	const char *k, *slot_name;
+	const char *slot_name;
 	int i;
 
 	if (!strcmp(var, "color.advice")) {
@@ -146,13 +146,10 @@ int git_default_advice_config(const char *var, const char *value)
 		return color_parse(value, advice_colors[slot]);
 	}
 
-	if (!skip_prefix(var, "advice.", &k))
-		return 0;
-
 	for (i = 0; i < ARRAY_SIZE(advice_setting); i++) {
-		if (strcasecmp(k, advice_setting[i].key))
+		if (strcasecmp(var, advice_setting[i].key))
 			continue;
-		advice_setting[i].enabled = git_config_bool(var, value);
+		advice_setting[i].disabled = !git_config_bool(var, value);
 		return 0;
 	}
 
-- 
2.33.0.1404.g7bcfc82b295


  parent reply	other threads:[~2021-10-04  1:58 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-04  1:58 [PATCH 0/5] advice API: simplification, small fixes, readability Ævar Arnfjörð Bjarmason
2021-10-04  1:58 ` [PATCH 1/5] advice.h: don't indent top-level enum Ævar Arnfjörð Bjarmason
2021-10-04  1:58 ` [PATCH 2/5] advice output: emit empty lines as "hint:", not "hint: " Ævar Arnfjörð Bjarmason
2021-10-04  1:58 ` [PATCH 3/5] advice.[ch]: remove advice.pushNonFastForward alias Ævar Arnfjörð Bjarmason
2021-10-04  1:58 ` Ævar Arnfjörð Bjarmason [this message]
2021-10-04  1:58 ` [PATCH 5/5] advice.[ch]: sort enum fields in alphabetical order Ævar Arnfjörð Bjarmason

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=patch-4.5-25f6f5cd018-20211004T015432Z-avarab@gmail.com \
    --to=avarab@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=heba.waly@gmail.com \
    --cc=mathstuf@gmail.com \
    /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.