Skip to content

Commit 12bdc88

Browse files
szedergitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e8f9e42 commit 12bdc88

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

contrib/completion/git-completion.bash

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -744,13 +744,9 @@ __git_compute_porcelain_commands ()
744744
__git_get_config_variables ()
745745
{
746746
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/ */}"
754750
done
755751
}
756752

t/t9902-completion.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,18 @@ test_expect_success '__git_remotes - list remotes from $GIT_DIR/remotes and from
370370
test_cmp expect actual
371371
'
372372

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+
373385
test_expect_success '__git_pretty_aliases' '
374386
cat >expect <<-EOF &&
375387
author

0 commit comments

Comments
 (0)