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

[PATCH 0/8] builtin/config: canonicalize "value_regex" with `--type=bool[-or-int]`

From
MÅMartin Ågren <martin.agren@gmail.com>
Date
Nov 13, 2019, 18:54 UTC
Message-ID
<cover.1573670565.git.martin.agren@gmail.com>

To find all config items "foo.*" that are configured as the Boolean value "true", you can try executing

  git config --type=bool --name-only --get-regexp '^foo\.' true

... and hope that you didn't spell "true" as "on", "True" or "1" back when you populated your config. This shortcoming has been mentioned as a left-over bit [1] [2].

This patch series teaches `git config` to canonicalize the incoming "value_regex" ("true" in the example above), then canonicalize candidate values as we go through the config. Or if you will, `git config` learns a brand new type of regex, corresponding to the different ways there are of spelling "true" and "false", respectively.

`--type=bool-or-int` gets the same treatment, except we need to to be able to handle the ints and regexes matching particular ints that we must expect. That said, even with `--type=bool` we can't move too aggressively towards *requiring* that the incoming "value_regex" canonializes as a Boolean value. The penultimate patch starts to warn on non-canonicalizing values; the final patch makes us bail out entirely.

The last patch is not meant for immediate inclusion, but I post it anyway. I can re-submit it at an appropriate time, or maybe it could slumber on pu until the time is ripe for completing the switch.

[1] https://git-blame.blogspot.com/p/leftover-bits.html [2] https://public-inbox.org/git/xmqq7frsh4tw.fsf@gitster.dls.corp.google.com/

Martin Ågren (8):
  config: make `git_parse_maybe_bool_text()` public
  t1300: modernize part of script
  builtin/config: extract `handle_value_regex()` from `get_value()`
  builtin/config: collect "value_regexp" data in a struct
  builtin/config: canonicalize "value_regex" with `--type=bool`
  builtin/config: canonicalize "value_regex" with `--type=bool-or-int`
  builtin/config: warn if "value_regex" doesn't canonicalize as boolean
  builtin/config: die if "value_regex" doesn't canonicalize as boolean
 Documentation/git-config.txt |   5 +
 builtin/config.c             |  84 +++++++++++----
 config.c                     |   2 +-
 config.h                     |   7 ++
 t/t1300-config.sh            | 199 ++++++++++++++++++++++-------------
 5 files changed, 203 insertions(+), 94 deletions(-)
-- 
2.24.0
Next: Martin Ågren
Message 1 of 23 in “builtin/config: canonicalize "value_regex" with `--type=bool[-or-int]`”
  1. 0/8 builtin/config: canonicalize "value_regex" with `--type=bool[-or-int]`Martin Ågren, Nov 13, 2019
  2. 1/8 config: make `git_parse_maybe_bool_text()` publicMartin Ågren, Nov 13, 2019
  3. 2/8 t1300: modernize part of scriptMartin Ågren, Nov 13, 2019
  4. Junio C HamanoNov 21, 2019
  5. 3/8 builtin/config: extract `handle_value_regex()` from `get_value()`Martin Ågren, Nov 13, 2019
  6. Junio C HamanoNov 21, 2019
  7. Martin ÅgrenNov 21, 2019
  8. 4/8 builtin/config: collect "value_regexp" data in a structMartin Ågren, Nov 13, 2019
  9. Junio C HamanoNov 21, 2019
  10. Martin ÅgrenNov 21, 2019
  11. Junio C HamanoNov 22, 2019
  12. 5/8 builtin/config: canonicalize "value_regex" with `--type=bool`Martin Ågren, Nov 13, 2019
  13. Junio C HamanoNov 21, 2019
  14. 6/8 builtin/config: canonicalize "value_regex" with `--type=bool-or-int`Martin Ågren, Nov 13, 2019
  15. 7/8 builtin/config: warn if "value_regex" doesn't canonicalize as booleanMartin Ågren, Nov 13, 2019
  16. Junio C HamanoNov 21, 2019
  17. Martin ÅgrenNov 21, 2019
  18. 8/8 builtin/config: die if "value_regex" doesn't canonicalize as booleanMartin Ågren, Nov 13, 2019
  19. Junio C HamanoNov 14, 2019
  20. Martin ÅgrenNov 14, 2019
  21. Jeff KingNov 14, 2019
  22. Martin ÅgrenNov 14, 2019
  23. Jeff KingNov 14, 2019

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.