completion: simplify query for config variables
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>
SZEDER Gábor committed
May 10, 2015 at 14:50 UTC
12bdc880c793e87b5485a1316a3a0c73ef0f1f83
2 files changed
+15
-7
contrib/completion/git-completion.bash
+3
-7
@@ -744,13 +744,9 @@ __git_compute_porcelain_commands ()
744
__git_get_config_variables ()
745
{
746
local section="$1" i IFS=$'\n'
747
- for i in $(git --git-dir="$(__gitdir)" config --get-regexp "$section\..*" 2>/dev/null); do
748
- case "$i" in
749
- $section.*)
750
- i="${i#$section.}"
751
- echo "${i/ */}"
752
- ;;
753
- esac
747
+ for i in $(git --git-dir="$(__gitdir)" config --get-regexp "^$section\..*" 2>/dev/null); do
748
+ i="${i#$section.}"
749
+ echo "${i/ */}"
750
done
751
}
752
t/t9902-completion.sh
+12
@@ -370,6 +370,18 @@ test_expect_success '__git_remotes - list remotes from $GIT_DIR/remotes and from
370
test_cmp expect actual
371
'
372
373
+test_expect_success '__git_get_config_variables' '
374
+ cat >expect <<-EOF &&
375
+ name-1
376
+ name-2
377
+ EOF
378
+ test_config interesting.name-1 good &&
379
+ test_config interesting.name-2 good &&
380
+ test_config subsection.interesting.name-3 bad &&
381
+ __git_get_config_variables interesting >actual &&
382
+ test_cmp expect actual
383
+'
384
+
385
test_expect_success '__git_pretty_aliases' '
386
cat >expect <<-EOF &&
387
author