git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v5 1/3] builtin/config: introduce `--default`

From
Taylor Blau <me@ttaylorr.com>
Date
Apr 7, 2018, 00:49 UTC
Message-ID
<20180407004916.GC78042@syl.local>
In-Reply-To
<CAPig+cRKaxECLHb1id6Mcd0O3uOiDzdGB4ZxPt1UpwUDi9Xb+g@mail.gmail.com>
On Fri, Apr 06, 2018 at 02:53:45AM -0400, Eric Sunshine wrote:
Show 30 quoted lines
> 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.

Show 10 quoted lines
> 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,
Show 50 quoted lines
>
> > +       }
> > @@ -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

Previous: Eric SunshineNext: Eric Sunshine
Message 72 of 83 in “Teach `--default` to `git-config(1)`”
  1. 0/4 Teach `--default` to `git-config(1)`Taylor Blau, Mar 6, 2018
  2. 1/4 builtin/config: introduce `--default`Taylor Blau, Mar 6, 2018
  3. Jeff KingMar 6, 2018
  4. Eric SunshineMar 6, 2018
  5. Eric SunshineMar 6, 2018
  6. 3/4 config.c: introduce 'git_config_color' to parse ANSI colorsTaylor Blau, Mar 6, 2018
  7. Jeff KingMar 6, 2018
  8. 4/4 builtin/config: introduce `--color` type specifierTaylor Blau, Mar 6, 2018
  9. Jeff KingMar 6, 2018
  10. 2/4 Documentation: list all type specifiers in config proseTaylor Blau, Mar 6, 2018
  11. Jeff KingMar 6, 2018
  12. Junio C HamanoMar 6, 2018
  13. Taylor BlauMar 6, 2018
  14. 0/4 Teach `--default` to `git-config(1)`Taylor Blau, Mar 24, 2018
  15. 1/4 builtin/config: introduce `--default`Taylor Blau, Mar 24, 2018
  16. Jeff KingMar 26, 2018
  17. Taylor BlauMar 29, 2018
  18. 2/4 Documentation: list all type specifiers in config proseTaylor Blau, Mar 24, 2018
  19. Jeff KingMar 26, 2018
  20. Taylor BlauMar 29, 2018
  21. 3/4 config.c: introduce 'git_config_color' to parse ANSI colorsTaylor Blau, Mar 24, 2018
  22. 4/4 builtin/config: introduce `--color` type specifierTaylor Blau, Mar 24, 2018
  23. Jeff KingMar 26, 2018
  24. Taylor BlauMar 29, 2018
  25. Jeff KingMar 26, 2018
  26. 0/4 Teach `--default` to `git-config(1)`Taylor Blau, Mar 29, 2018
  27. 1/3 builtin/config: introduce `--default`Taylor Blau, Mar 29, 2018
  28. Junio C HamanoMar 30, 2018
  29. Taylor BlauApr 5, 2018
  30. Eric SunshineMar 30, 2018
  31. Taylor BlauApr 5, 2018
  32. 2/3 config.c: introduce 'git_config_color' to parse ANSI colorsTaylor Blau, Mar 29, 2018
  33. Eric SunshineMar 30, 2018
  34. Taylor BlauApr 5, 2018
  35. 3/3 builtin/config: introduce `color` type specifierTaylor Blau, Mar 29, 2018
  36. Junio C HamanoMar 30, 2018
  37. Taylor BlauApr 5, 2018
  38. Taylor BlauMar 29, 2018
  39. 0/3 Teach `--default` to `git-config(1)`Taylor Blau, Apr 5, 2018
  40. Jeff KingApr 5, 2018
  41. 0/2 builtin/config.c: prefer `--type=bool` over `--bool`, etc.Taylor Blau, Apr 6, 2018
  42. Taylor BlauApr 6, 2018
  43. 0/2 *** SUBJECT HERE ***Taylor Blau, Apr 6, 2018
  44. Jacob KellerApr 6, 2018
  45. 0/3 builtin/config: introduce `--default`Taylor Blau, Apr 6, 2018
  46. 0/3 Teach `--default` to `git-config(1)`Taylor Blau, Apr 10, 2018
  47. 1/3 builtin/config: introduce `--default`Taylor Blau, Apr 5, 2018
  48. Jeff KingApr 5, 2018
  49. Taylor BlauApr 6, 2018
  50. Junio C HamanoApr 8, 2018
  51. Taylor BlauApr 10, 2018
  52. Eric SunshineApr 5, 2018
  53. Taylor BlauApr 6, 2018
  54. 2/3 config.c: introduce 'git_config_color' to parse ANSI colorsTaylor Blau, Apr 5, 2018
  55. 3/3 builtin/config: introduce `color` type specifierTaylor Blau, Apr 5, 2018
  56. Jeff KingApr 5, 2018
  57. Eric SunshineApr 5, 2018
  58. Jeff KingApr 5, 2018
  59. Taylor BlauApr 6, 2018
  60. Taylor BlauApr 6, 2018
  61. 1/2 builtin/config.c: treat type specifiers singularlyTaylor Blau, Apr 6, 2018
  62. 2/2 builtin/config.c: prefer `--type=bool` over `--bool`, etc.Taylor Blau, Apr 6, 2018
  63. Eric SunshineApr 6, 2018
  64. Taylor BlauApr 6, 2018
  65. Jeff KingApr 6, 2018
  66. Taylor BlauApr 7, 2018
  67. 1/3 builtin/config: introduce `--default`Taylor Blau, Apr 6, 2018
  68. Eric SunshineApr 6, 2018
  69. Eric SunshineApr 6, 2018
  70. Taylor BlauApr 7, 2018
  71. Eric SunshineApr 7, 2018
  72. Taylor BlauApr 7, 2018
  73. Eric SunshineApr 7, 2018
  74. 2/3 config.c: introduce 'git_config_color' to parse ANSI colorsTaylor Blau, Apr 6, 2018
  75. 3/3 builtin/config: introduce `color` type specifierTaylor Blau, Apr 6, 2018
  76. Eric SunshineApr 6, 2018
  77. Taylor BlauApr 7, 2018
  78. 2/3 config.c: introduce 'git_config_color' to parse ANSI colorsTaylor Blau, Apr 10, 2018
  79. 3/3 builtin/config: introduce `color` type specifierTaylor Blau, Apr 10, 2018
  80. 3/3 builtin/config: introduce `color` type specifierTaylor Blau, Apr 10, 2018
  81. Junio C HamanoApr 10, 2018
  82. 1/3 builtin/config: introduce `--default`Taylor Blau, Apr 10, 2018
  83. Junio C HamanoApr 10, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.