Message ID | 7c9b63c26164b037272fde689bb3150b30aa7528.1691211879.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | d2be104085b24867e3dd9cb061c75b456071b351 |
Headers | show |
Series | Trailer readability cleanups | expand |
"Linus Arver via GitGitGadget" <gitgitgadget@gmail.com> writes: > (2) "Default" can also mean the "trailer.*" configurations themselves, > because these configurations are used by "default" (ahead of the > hardcoded defaults in (1)) if no command line arguments are > provided. Interesting, I would have never thought of config as 'default'. In fact, I would have thought that this de facto behavior (which you also clarified in [1]) is a bug if not for the fact that in an internal version of this series, you cited a commit message that describes this as expected behavior. That context would be very welcome in the ML, I think. [1] https://lore.kernel.org/git/6b427b4b1e82b1f01640f1f49fe8d1c2fd02111e.1691210737.git.gitgitgadget@gmail.com > In addition, the corresponding *_DEFAULT values are chosen when the user > provides the "--no-where", "--no-if-exists", or "--no-if-missing" flags > on the command line. These "--no-*" flags are used to clear previously > provided flags of the form "--where", "--if-exists", and "--if-missing". > Using these "--no-*" flags undoes the specifying of these flags (if > any), so using the word "UNSPECIFIED" is more natural here. > > So instead of using "*_DEFAULT", use "*_UNSPECIFIED" because this > signals to the reader that the *_UNSPECIFIED value by itself carries no > meaning (it's a zero value and by itself does not "default" to anything, > necessitating the need to have some other way of getting to a useful > value). Makse sense. This seems like a good change. > @@ -586,7 +586,10 @@ static void ensure_configured(void) > if (configured) > return; > > - /* Default config must be setup first */ > + /* > + * Default config must be setup first. These defaults are used if there > + * are no "trailer.*" or "trailer.<token>.*" options configured. > + */ > default_conf_info.where = WHERE_END; > default_conf_info.if_exists = EXISTS_ADD_IF_DIFFERENT_NEIGHBOR; > default_conf_info.if_missing = MISSING_ADD; As mentioned earlier, I find it a bit odd that we're calling config 'default' (and also that we're calling CLI args config), but renaming default_conf_info to config_conf_info sounds worse, so let's leave it as-is.
Glen Choo <chooglen@google.com> writes: > "Linus Arver via GitGitGadget" <gitgitgadget@gmail.com> writes: > >> (2) "Default" can also mean the "trailer.*" configurations themselves, >> because these configurations are used by "default" (ahead of the >> hardcoded defaults in (1)) if no command line arguments are >> provided. > > Interesting, I would have never thought of config as 'default'. In fact, > I would have thought that this de facto behavior (which you also > clarified in [1]) is a bug if not for the fact that in an internal > version of this series, you cited a commit message that describes this > as expected behavior. That context would be very welcome in the ML, I > think. > > [1] https://lore.kernel.org/git/6b427b4b1e82b1f01640f1f49fe8d1c2fd02111e.1691210737.git.gitgitgadget@gmail.com I forget the internal version/discussion, but I assume you're thinking of 0ea5292e6b (interpret-trailers: add options for actions, 2017-08-01). I will reroll and mention it to the commit message. >> In addition, the corresponding *_DEFAULT values are chosen when the user >> provides the "--no-where", "--no-if-exists", or "--no-if-missing" flags >> on the command line. These "--no-*" flags are used to clear previously >> provided flags of the form "--where", "--if-exists", and "--if-missing". >> Using these "--no-*" flags undoes the specifying of these flags (if >> any), so using the word "UNSPECIFIED" is more natural here. >> >> So instead of using "*_DEFAULT", use "*_UNSPECIFIED" because this >> signals to the reader that the *_UNSPECIFIED value by itself carries no >> meaning (it's a zero value and by itself does not "default" to anything, >> necessitating the need to have some other way of getting to a useful >> value). > > Makse sense. This seems like a good change. > >> @@ -586,7 +586,10 @@ static void ensure_configured(void) >> if (configured) >> return; >> >> - /* Default config must be setup first */ >> + /* >> + * Default config must be setup first. These defaults are used if there >> + * are no "trailer.*" or "trailer.<token>.*" options configured. >> + */ >> default_conf_info.where = WHERE_END; >> default_conf_info.if_exists = EXISTS_ADD_IF_DIFFERENT_NEIGHBOR; >> default_conf_info.if_missing = MISSING_ADD; > > As mentioned earlier, I find it a bit odd that we're calling config > 'default' (and also that we're calling CLI args config), but > renaming default_conf_info to config_conf_info sounds worse, so let's > leave it as-is. SGTM. Although, we could also just rename it to "conf_info" (same name as the struct name). Unless such same-variable-name-as-the-struct is discouraged in the codebase.
diff --git a/trailer.c b/trailer.c index 3b9ce199636..c49826decae 100644 --- a/trailer.c +++ b/trailer.c @@ -388,7 +388,7 @@ static void process_trailers_lists(struct list_head *head, int trailer_set_where(enum trailer_where *item, const char *value) { if (!value) - *item = WHERE_DEFAULT; + *item = WHERE_UNSPECIFIED; else if (!strcasecmp("after", value)) *item = WHERE_AFTER; else if (!strcasecmp("before", value)) @@ -405,7 +405,7 @@ int trailer_set_where(enum trailer_where *item, const char *value) int trailer_set_if_exists(enum trailer_if_exists *item, const char *value) { if (!value) - *item = EXISTS_DEFAULT; + *item = EXISTS_UNSPECIFIED; else if (!strcasecmp("addIfDifferent", value)) *item = EXISTS_ADD_IF_DIFFERENT; else if (!strcasecmp("addIfDifferentNeighbor", value)) @@ -424,7 +424,7 @@ int trailer_set_if_exists(enum trailer_if_exists *item, const char *value) int trailer_set_if_missing(enum trailer_if_missing *item, const char *value) { if (!value) - *item = MISSING_DEFAULT; + *item = MISSING_UNSPECIFIED; else if (!strcasecmp("doNothing", value)) *item = MISSING_DO_NOTHING; else if (!strcasecmp("add", value)) @@ -586,7 +586,10 @@ static void ensure_configured(void) if (configured) return; - /* Default config must be setup first */ + /* + * Default config must be setup first. These defaults are used if there + * are no "trailer.*" or "trailer.<token>.*" options configured. + */ default_conf_info.where = WHERE_END; default_conf_info.if_exists = EXISTS_ADD_IF_DIFFERENT_NEIGHBOR; default_conf_info.if_missing = MISSING_ADD; @@ -701,11 +704,11 @@ static void add_arg_item(struct list_head *arg_head, char *tok, char *val, new_item->value = val; duplicate_conf(&new_item->conf, conf); if (new_trailer_item) { - if (new_trailer_item->where != WHERE_DEFAULT) + if (new_trailer_item->where != WHERE_UNSPECIFIED) new_item->conf.where = new_trailer_item->where; - if (new_trailer_item->if_exists != EXISTS_DEFAULT) + if (new_trailer_item->if_exists != EXISTS_UNSPECIFIED) new_item->conf.if_exists = new_trailer_item->if_exists; - if (new_trailer_item->if_missing != MISSING_DEFAULT) + if (new_trailer_item->if_missing != MISSING_UNSPECIFIED) new_item->conf.if_missing = new_trailer_item->if_missing; } list_add_tail(&new_item->list, arg_head); diff --git a/trailer.h b/trailer.h index db57e028650..924cf5405c6 100644 --- a/trailer.h +++ b/trailer.h @@ -5,14 +5,14 @@ #include "strbuf.h" enum trailer_where { - WHERE_DEFAULT, + WHERE_UNSPECIFIED, WHERE_END, WHERE_AFTER, WHERE_BEFORE, WHERE_START }; enum trailer_if_exists { - EXISTS_DEFAULT, + EXISTS_UNSPECIFIED, EXISTS_ADD_IF_DIFFERENT_NEIGHBOR, EXISTS_ADD_IF_DIFFERENT, EXISTS_ADD, @@ -20,7 +20,7 @@ enum trailer_if_exists { EXISTS_DO_NOTHING }; enum trailer_if_missing { - MISSING_DEFAULT, + MISSING_UNSPECIFIED, MISSING_ADD, MISSING_DO_NOTHING };