All of lore.kernel.org
 help / color / mirror / Atom feed
From: Taylor Blau <me@ttaylorr.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: Taylor Blau <me@ttaylorr.com>, Git List <git@vger.kernel.org>,
	Jeff King <peff@peff.net>, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v5 1/3] builtin/config: introduce `--default`
Date: Fri, 6 Apr 2018 17:49:16 -0700	[thread overview]
Message-ID: <20180407004916.GC78042@syl.local> (raw)
In-Reply-To: <CAPig+cRKaxECLHb1id6Mcd0O3uOiDzdGB4ZxPt1UpwUDi9Xb+g@mail.gmail.com>

On Fri, Apr 06, 2018 at 02:53:45AM -0400, Eric Sunshine wrote:
> On Fri, Apr 6, 2018 at 2:30 AM, Taylor Blau <me@ttaylorr.com> wrote:
> > [...]
> > This commit (and those following it in this series) aim to eventually
> > replace `--get-color` with a consistent alternative. By introducing
> > `--default`, we allow the `--get-color` action to be promoted to a
> > `--type=color` type specifier, retaining the "fallback" behavior via the
> > `--default` flag introduced in this commit.
> >
> > For example, we aim to replace:
> >
> >   $ git config --get-color variable [default] [...]
> >
> > with:
> >
> >   $ git config --default default --type=color variable [...]
> >
> > Signed-off-by: Taylor Blau <me@ttaylorr.com>
> > ---
> > diff --git a/builtin/config.c b/builtin/config.c
> > @@ -286,6 +288,16 @@ static int get_value(const char *key_, const char *regex_)
> > +       if (!values.nr && default_value) {
> > +               struct strbuf *item;
> > +               ALLOC_GROW(values.items, values.nr + 1, values.alloc);
> > +               item = &values.items[values.nr++];
> > +               strbuf_init(item, 0);
> > +               if (format_config(item, key_, default_value) < 0) {
> > +                       die(_("failed to format default config value"));
> > +               }
>
> Unnecessary braces.

Ah, that's leftover from changing this around in your last round of
review. Cleaned up locally.

> Also, an error message such as this is typically more helpful when it
> shows the item which caused the problem:
>
>     die(_("failed to format default config value: %s"), default_value);
>
> However, since the message already says "default", it's pretty easy to
> understand that it's talking about the argument to --default, so it's
> perhaps not such a big deal in this case.
>
> Anyhow, neither point is worth a re-roll.

I like including the value of default_value. I've included it locally,

>
> > +       }
> > @@ -624,6 +636,13 @@ int cmd_config(int argc, const char **argv, const char *prefix)
> >                 usage_with_options(builtin_config_usage, builtin_config_options);
> >         }
> >
> > +
>
> Unnecessary new blank line.
>
> > +       if (default_value && !(actions & ACTION_GET)) {
> > +               error("--default is only applicable to --get");
> > +               usage_with_options(builtin_config_usage,
> > +                       builtin_config_options);
> > +       }
> > diff --git a/t/t1310-config-default.sh b/t/t1310-config-default.sh
> > @@ -0,0 +1,38 @@
> > +test_expect_success 'uses --default when missing entry' '
> > +       echo quux >expect &&
> > +       git config -f config --default quux core.foo >actual &&
> > +       test_cmp expect actual
> > +'
> >
> > +test_expect_success 'canonicalizes --default with appropriate type' '
> > +       echo true >expect &&
> > +       git config -f config --default=true --bool core.foo >actual &&
> > +       test_cmp expect actual
> > +'
>
> I would trust this canonicalization test a lot more if it used one of
> the aliases for "true" since it doesn't presently prove that
> canonicalization is taking place. For instance:
>
>     git config -f config --default=yes --bool core.foo >actual &&
>
> > +test_expect_success 'uses entry when available' '
> > +       echo bar >expect &&
> > +       git config --add core.foo bar &&
> > +       git config --default baz core.foo >actual &&
> > +       git config --unset core.foo &&
> > +       test_cmp expect actual
> > +'
>
> If you happen to re-roll, can we move this test so it immediately
> follows the "uses --default when missing entry" test? That's where I
> had expected to find it and had even written a review comment saying
> so (but deleted the comment once I got down to this spot in the
> patch). Also, perhaps rename the test to make it clearer that it
> complements the "uses --default when missing entry" test; perhaps
> "does not fallback to --default when entry present" or something.

That location makes much more sense, as does using --default=yes to
ensure that canonicalization is taking place. I've updated that locally,
as well as the preceding test to make it clearer that they are
contrasting tests:

	- 'falls back to --default when missing entry'
	- 'does not fallback to --default when entry present'

Though I am not sure about "falls back" to mean "uses --default". I am
not sure which to pick here... what are your thoughts?

Thanks,
Taylor

  parent reply	other threads:[~2018-04-07  0:49 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-06  2:17 [PATCH 0/4] Teach `--default` to `git-config(1)` Taylor Blau
2018-03-06  2:17 ` [PATCH 1/4] builtin/config: introduce `--default` Taylor Blau
2018-03-06  6:52   ` Jeff King
2018-03-06  7:14     ` Eric Sunshine
2018-03-06  7:08   ` Eric Sunshine
2018-03-06  2:17 ` [PATCH 2/4] Documentation: list all type specifiers in config prose Taylor Blau
2018-03-06  6:52   ` Jeff King
2018-03-06  7:40     ` Junio C Hamano
2018-03-06  2:17 ` [PATCH 3/4] config.c: introduce 'git_config_color' to parse ANSI colors Taylor Blau
2018-03-06  6:53   ` Jeff King
2018-03-06  2:17 ` [PATCH 4/4] builtin/config: introduce `--color` type specifier Taylor Blau
2018-03-06  7:00   ` Jeff King
2018-03-06  2:20 ` [PATCH 0/4] Teach `--default` to `git-config(1)` Taylor Blau
2018-03-24  0:55 ` [PATCH v2 " Taylor Blau
2018-03-24  0:55   ` [PATCH v2 1/4] builtin/config: introduce `--default` Taylor Blau
2018-03-26  8:34     ` Jeff King
2018-03-29  1:31       ` Taylor Blau
2018-03-24  0:55   ` [PATCH v2 2/4] Documentation: list all type specifiers in config prose Taylor Blau
2018-03-26  8:55     ` Jeff King
2018-03-29  1:32       ` Taylor Blau
2018-03-24  0:55   ` [PATCH v2 3/4] config.c: introduce 'git_config_color' to parse ANSI colors Taylor Blau
2018-03-24  0:55   ` [PATCH v2 4/4] builtin/config: introduce `--color` type specifier Taylor Blau
2018-03-26  9:16     ` Jeff King
2018-03-29  1:36       ` Taylor Blau
2018-03-26  9:18   ` [PATCH v2 0/4] Teach `--default` to `git-config(1)` Jeff King
2018-03-29  1:16   ` [PATCH v3 " Taylor Blau
2018-03-29  1:16     ` [PATCH v3 1/3] builtin/config: introduce `--default` Taylor Blau
2018-03-30 18:06       ` Junio C Hamano
2018-04-05  2:45         ` Taylor Blau
2018-03-30 20:23       ` Eric Sunshine
2018-04-05  2:46         ` Taylor Blau
2018-03-29  1:16     ` [PATCH v3 2/3] config.c: introduce 'git_config_color' to parse ANSI colors Taylor Blau
2018-03-30 20:26       ` Eric Sunshine
2018-04-05  2:47         ` Taylor Blau
2018-03-29  1:16     ` [PATCH v3 3/3] builtin/config: introduce `color` type specifier Taylor Blau
2018-03-30 18:09       ` Junio C Hamano
2018-04-05  2:48         ` Taylor Blau
2018-03-29  1:29     ` [PATCH v3 0/4] Teach `--default` to `git-config(1)` Taylor Blau
2018-04-05  2:58     ` [PATCH v4 0/3] " Taylor Blau
2018-04-05 22:37       ` Jeff King
     [not found]     ` <cover.1522896713.git.me@ttaylorr.com>
2018-04-05  2:59       ` [PATCH v4 1/3] builtin/config: introduce `--default` Taylor Blau
2018-04-05 22:29         ` Jeff King
2018-04-06  5:40           ` Taylor Blau
2018-04-08 23:18           ` Junio C Hamano
2018-04-10  0:20             ` Taylor Blau
2018-04-05 22:40         ` Eric Sunshine
2018-04-06  5:50           ` Taylor Blau
2018-04-05  2:59       ` [PATCH v4 2/3] config.c: introduce 'git_config_color' to parse ANSI colors Taylor Blau
2018-04-05  2:59       ` [PATCH v4 3/3] builtin/config: introduce `color` type specifier Taylor Blau
2018-04-05 22:36         ` Jeff King
2018-04-05 22:52           ` Eric Sunshine
2018-04-05 22:53             ` Jeff King
2018-04-06  6:05               ` Taylor Blau
2018-04-06  6:02           ` Taylor Blau
2018-04-06  5:27     ` [PATCH v5 0/2] *** SUBJECT HERE *** Taylor Blau
2018-04-06  5:40       ` Jacob Keller
2018-04-06  5:29     ` [PATCH v5 0/2] builtin/config.c: prefer `--type=bool` over `--bool`, etc Taylor Blau
2018-04-06  5:32       ` Taylor Blau
     [not found]     ` <cover.1522992443.git.me@ttaylorr.com>
2018-04-06  5:29       ` [PATCH v5 1/2] builtin/config.c: treat type specifiers singularly Taylor Blau
2018-04-06  5:29       ` [PATCH v5 2/2] builtin/config.c: prefer `--type=bool` over `--bool`, etc Taylor Blau
2018-04-06  6:14         ` Eric Sunshine
2018-04-06  6:41           ` Taylor Blau
2018-04-06 14:55           ` Jeff King
2018-04-07  1:00             ` Taylor Blau
2018-04-06  6:30 ` [PATCH v5 0/3] builtin/config: introduce `--default` Taylor Blau
     [not found] ` <cover.1522996150.git.me@ttaylorr.com>
2018-04-06  6:30   ` [PATCH v5 1/3] " Taylor Blau
2018-04-06  6:53     ` Eric Sunshine
2018-04-06  7:40       ` Eric Sunshine
2018-04-07  0:58         ` Taylor Blau
2018-04-07  8:44           ` Eric Sunshine
2018-04-07  0:49       ` Taylor Blau [this message]
2018-04-07  8:38         ` Eric Sunshine
2018-04-06  6:30   ` [PATCH v5 2/3] config.c: introduce 'git_config_color' to parse ANSI colors Taylor Blau
2018-04-06  6:30   ` [PATCH v5 3/3] builtin/config: introduce `color` type specifier Taylor Blau
2018-04-06  7:29     ` Eric Sunshine
2018-04-07  0:42       ` Taylor Blau
2018-04-10  0:18 ` [PATCH v6 0/3] Teach `--default` to `git-config(1)` Taylor Blau
     [not found] ` <cover.1523319159.git.me@ttaylorr.com>
2018-04-10  0:18   ` [PATCH v6 1/3] builtin/config: introduce `--default` Taylor Blau
2018-04-10  1:50     ` Junio C Hamano
2018-04-10  0:18   ` [PATCH v6 2/3] config.c: introduce 'git_config_color' to parse ANSI colors Taylor Blau
2018-04-10  0:18   ` [PATCH v6 3/3] builtin/config: introduce `color` type specifier Taylor Blau
2018-04-10  0:18   ` Taylor Blau
2018-04-10  1:54     ` Junio C Hamano

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=20180407004916.GC78042@syl.local \
    --to=me@ttaylorr.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=sunshine@sunshineco.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.