Re: [PATCH v5 2/2] builtin/config.c: prefer `--type=bool` over `--bool`, etc.
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Apr 6, 2018, 06:14 UTC
- Message-ID
- <CAPig+cSYuWReTFfnN8Wg2VGKcOk5SPHHWpTdW6yks67mkOjY0Q@mail.gmail.com>
- In-Reply-To
- <20180406052907.GD60769@syl.local>
On Fri, Apr 6, 2018 at 1:29 AM, Taylor Blau <me@ttaylorr.com> wrote:
> builtin/config.c: prefer `--type=bool` over `--bool`, etc.
This patch isn't just preferring --type; it's actually introducing the functionality. Perhaps:
builtin/config.c: support --type=<type> as preferred alias for --<type>
(Not worth a re-roll.)
Show 6 quoted lines
> `git config` has long allowed the ability for callers to provide a 'type > specifier', which instructs `git config` to (1) ensure that incoming > values are satisfiable under that type, and (2) that outgoing values are > canonicalized under that type. > > In another series, we propose to add extend this functionality with
"add extend"?
Show 14 quoted lines
> `--type=color` and `--default` to replace `--get-color`. > > However, we traditionally use `--color` to mean "colorize this output", > instead of "this value should be treated as a color". > > Currently, `git config` does not support this kind of colorization, but > we should be careful to avoid inhabiting this option too soon, so that > `git config` can support `--type=color` (in the traditional sense) in > the future, if that is desired. > > In this patch, we prefer `--type=<int|bool|bool-or-int|...>` over > `--int`, `--bool`, and etc. This allows the aforementioned upcoming > patch to support querying a color value with a default via `--type=color > --default=....`, without squandering `--color`.
Drop one of the periods in "...." if you happen to re-roll for some reason.
Show 9 quoted lines
> Signed-off-by: Taylor Blau <me@ttaylorr.com> > --- > diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt > @@ -9,13 +9,13 @@ git-config - Get and set repository or global options > SYNOPSIS > -------- > [verse] > -'git config' [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]] > +'git config' [<file-option>] [--type] [--show-origin] [-z|--null] name [value [value_regex]]
It's pretty confusing to see bare "--type" like this which makes it seem as if it doesn't take an argument at all. Better would be "[--type=<type>]".
> @@ -38,12 +38,13 @@ existing values that match the regexp are updated or unset. If > +The `--type` option requests 'git config' to ensure that the configured values > +assosciated with the given variable(s) are of the given type. When given
s/assosciated/associated/
> +`--type`, 'git config' will convert the value to that type's canonical form. > +ensure that the variable(s) are of the given type and convert the value to the > +canonical form.
Meh, looks like some sort of editing botch here. I doubt you meant to repeat "canonical form" like this.
Show 8 quoted lines
> If no type specifier is passed, no checks or transformations are > +performed on the value. Callers may unset any pre-existing type specifiers with > +`--no-type`. > > +--no-type:: > + Un-sets the previously set type specifier (if one was previously set). This > + option requests that 'git config' not canonicalize the retrieved variable. > + `--no-type` has no effect without `--type=<type>` or `--<type>`.
The final sentence doesn't really add value; I'd probably drop it as extraneous. (Subjective, and not worth a re-roll.)
Show 19 quoted lines
> diff --git a/builtin/config.c b/builtin/config.c
> @@ -61,6 +61,33 @@ static int show_origin;
> +static int option_parse_type(const struct option *opt, const char *arg,
> + int unset)
> +{
> + [...]
> + if (!strcmp(arg, "bool"))
> + *type = TYPE_BOOL;
> + else if (!strcmp(arg, "int"))
> + *type = TYPE_INT;
> + else if (!strcmp(arg, "bool-or-int"))
> + *type = TYPE_BOOL_OR_INT;
> + else if (!strcmp(arg, "path"))
> + *type = TYPE_PATH;
> + else if (!strcmp(arg, "expiry-date"))
> + *type = TYPE_EXPIRY_DATE;
> + else {
> + die(_("unrecognized --type argument, %s"), arg);
> + return 1;Pointless unreachable 'return'.
> + } > + return 0; > +}