Thread (97 messages) 97 messages, 9 authors, 2025-08-03

Re: [PATCH v2 07/13] builtin/config: introduce "get" subcommand

From: Eric Sunshine <hidden>
Date: 2024-03-13 03:11:19

On Mon, Mar 11, 2024 at 7:20 PM Patrick Steinhardt [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Introduce a new "get" subcommand to git-config(1). Please refer to
preceding commits regarding the motivation behind this change.

Signed-off-by: Patrick Steinhardt <redacted>
---
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
@@ -80,6 +76,12 @@ COMMANDS
+get::
+       Get value for one or more config options. Values can be filtered by
+       regexes and URLs.Returns error code 1 if the key was not found and the
+       last value if multiple key values were found. If `--all` is set, then
+       all values will be shown.
s/URLs.Returns/URLs. Returns/

It's not a new problem with this description (since you're mostly just
relocating existing text), but I find the discussion of what is
returned quite confusing and difficult to interpret. Breaking it down
into simpler sentences might help:

    Emits the value of the specified key. If key is present
    multiple times in the configuration, emits the last
    value. If `--all` is specified, emits all values
    associated with key. Returns error code 1 if key
    is not present.

But, doing so may be outside the scope of this patch series and can be
tackled at a later date (or not at all).
quoted hunk ↗ jump to hunk
@@ -93,22 +95,16 @@ OPTIONS
+--all::
+       With "get", Return all values for a multi-valued key.
s/Return/return/
s/"get"/`get`/
+---regexp::
+       With "get", interpret the name as a regular expression. Regular
+       expression matching is currently case-sensitive and done against a
+       canonicalized version of the key in which section and variable names
+       are lowercased, but subsection names are not.
s/"get"/`get`/
quoted hunk ↗ jump to hunk
@@ -286,7 +271,7 @@ Valid `<type>`'s include:
 --default <value>::
-  When using `--get`, and the requested variable is not found, behave as if
+  When using `get`, and the requested variable is not found, behave as if
   <value> were the value assigned to the that variable.
Not a fault of this patch (and need not be fixed by this series): "to
the that" should be either "to the" or "to that".
quoted hunk ↗ jump to hunk
@@ -506,25 +509,25 @@ you have to provide a regex matching the value of exactly one line.
 To query the value for a given key, do

 ------------
-% git config --get core.filemode
+% git config get core.filemode
 ------------

 or

 ------------
-% git config core.filemode
+% git config get core.filemode
 ------------
Meh. We only need to retain one of these examples now, not both, right?
quoted hunk ↗ jump to hunk
diff --git a/t/t1300-config.sh b/t/t1300-config.sh
@@ -17,9 +17,15 @@ do
 case "$mode" in
 legacy)
        mode_prefix="--"
+       mode_get=""
+       mode_get_all="--get-all"
+       mode_get_regexp="--get-regexp"
        ;;
 subcommands)
        mode_prefix=""
+       mode_get="get"
+       mode_get_all="get --all"
+       mode_get_regexp="get --regexp --all --show-names"
        ;;
 *)
        echo "unknown mode $mode" >&2
The variables added by this patch to the `case` arms invalidate the
suggested simplification in my review of [6/13].
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help