completion: simplify query for config variables
authorSZEDER Gábor <szeder@ira.uka.de>
Sun, 10 May 2015 12:50:18 +0000 (14:50 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 12 May 2015 22:16:46 +0000 (15:16 -0700)
To get the name of all config variables in a given section we perform a
'git config --get-regex' query for all config variables containing the
name of that section, and then filter its output through a case statement
to throw away those that though contain but don't start with the given
section.

Modify the regex to match only at the beginning, so the case statement
becomes unnecessary and we can get rid of it. Add a test to check that a
match in the middle doesn't fool us.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash
t/t9902-completion.sh
index 4594ebcb1a05d6df3c5f6fad64d691c42a57af39..078b281f692f6acfbbe0bc5b888a06831f8ecff2 100644 (file)
@@ -744,13 +744,9 @@ __git_compute_porcelain_commands ()
 __git_get_config_variables ()
 {
        local section="$1" i IFS=$'\n'
-       for i in $(git --git-dir="$(__gitdir)" config --get-regexp "$section\..*" 2>/dev/null); do
-               case "$i" in
-               $section.*)
-                       i="${i#$section.}"
-                       echo "${i/ */}"
-                       ;;
-               esac
+       for i in $(git --git-dir="$(__gitdir)" config --get-regexp "^$section\..*" 2>/dev/null); do
+               i="${i#$section.}"
+               echo "${i/ */}"
        done
 }
 
index 07f2478c9bd97f6c40d048c901b1e3be2288adb3..2ba62fbc178e1c92dff493beebdc9683b36efd2a 100755 (executable)
@@ -370,6 +370,18 @@ test_expect_success '__git_remotes - list remotes from $GIT_DIR/remotes and from
        test_cmp expect actual
 '
 
+test_expect_success '__git_get_config_variables' '
+       cat >expect <<-EOF &&
+       name-1
+       name-2
+       EOF
+       test_config interesting.name-1 good &&
+       test_config interesting.name-2 good &&
+       test_config subsection.interesting.name-3 bad &&
+       __git_get_config_variables interesting >actual &&
+       test_cmp expect actual
+'
+
 test_expect_success '__git_pretty_aliases' '
        cat >expect <<-EOF &&
        author