completion: adapt git-config(1) to complete subcommands
With fe3ccc7aab
(Merge branch 'ps/config-subcommands', 2024-05-15),
git-config(1) has gained support for subcommands. These subcommands live
next to the old, action-based mode, so that both the old and new way
continue to work.
The manpage for this command has been updated to prominently show the
subcommands, and the action-based modes are marked as deprecated. Update
Bash completion scripts accordingly to advertise subcommands instead of
actions.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
19fe900cfc
commit
5dd5007f89
@ -2989,22 +2989,42 @@ __git_complete_config_variable_name_and_value ()
|
|||||||
|
|
||||||
_git_config ()
|
_git_config ()
|
||||||
{
|
{
|
||||||
case "$prev" in
|
local subcommands subcommand
|
||||||
--get|--get-all|--unset|--unset-all)
|
|
||||||
__gitcomp_nl "$(__git_config_get_set_variables)"
|
__git_resolve_builtins "config"
|
||||||
|
|
||||||
|
subcommands="$___git_resolved_builtins"
|
||||||
|
subcommand="$(__git_find_subcommand "$subcommands")"
|
||||||
|
|
||||||
|
if [ -z "$subcommand" ]
|
||||||
|
then
|
||||||
|
__gitcomp "$subcommands"
|
||||||
return
|
return
|
||||||
;;
|
fi
|
||||||
*.*)
|
|
||||||
__git_complete_config_variable_value
|
case "$cur" in
|
||||||
|
--*)
|
||||||
|
__gitcomp_builtin "config_$subcommand"
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
case "$cur" in
|
|
||||||
--*)
|
case "$subcommand" in
|
||||||
__gitcomp_builtin config
|
get)
|
||||||
|
__gitcomp_nl "$(__git_config_get_set_variables)"
|
||||||
;;
|
;;
|
||||||
*)
|
set)
|
||||||
__git_complete_config_variable_name
|
case "$prev" in
|
||||||
|
*.*)
|
||||||
|
__git_complete_config_variable_value
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
__git_complete_config_variable_name
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
unset)
|
||||||
|
__gitcomp_nl "$(__git_config_get_set_variables)"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -2742,30 +2742,58 @@ do
|
|||||||
'
|
'
|
||||||
done
|
done
|
||||||
|
|
||||||
test_expect_success 'git config - section' '
|
test_expect_success 'git config subcommand' '
|
||||||
test_completion "git config br" <<-\EOF
|
test_completion "git config " <<-\EOF
|
||||||
|
edit Z
|
||||||
|
get Z
|
||||||
|
list Z
|
||||||
|
remove-section Z
|
||||||
|
rename-section Z
|
||||||
|
set Z
|
||||||
|
unset Z
|
||||||
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git config subcommand options' '
|
||||||
|
test_completion "git config get --show-" <<-\EOF
|
||||||
|
--show-names Z
|
||||||
|
--show-origin Z
|
||||||
|
--show-scope Z
|
||||||
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git config get' '
|
||||||
|
test_when_finished "rm -f cfgfile" &&
|
||||||
|
git config set --file cfgfile foo.bar baz &&
|
||||||
|
test_completion "git config get --file cfgfile foo." <<-\EOF
|
||||||
|
foo.bar Z
|
||||||
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git config set - section' '
|
||||||
|
test_completion "git config set br" <<-\EOF
|
||||||
branch.Z
|
branch.Z
|
||||||
browser.Z
|
browser.Z
|
||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git config - section include, includeIf' '
|
test_expect_success 'git config set - section include, includeIf' '
|
||||||
test_completion "git config inclu" <<-\EOF
|
test_completion "git config set inclu" <<-\EOF
|
||||||
include.Z
|
include.Z
|
||||||
includeIf.Z
|
includeIf.Z
|
||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git config - variable name' '
|
test_expect_success 'git config set - variable name' '
|
||||||
test_completion "git config log.d" <<-\EOF
|
test_completion "git config set log.d" <<-\EOF
|
||||||
log.date Z
|
log.date Z
|
||||||
log.decorate Z
|
log.decorate Z
|
||||||
log.diffMerges Z
|
log.diffMerges Z
|
||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git config - variable name include' '
|
test_expect_success 'git config set - variable name include' '
|
||||||
test_completion "git config include.p" <<-\EOF
|
test_completion "git config set include.p" <<-\EOF
|
||||||
include.path Z
|
include.path Z
|
||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
@ -2776,8 +2804,8 @@ test_expect_success 'setup for git config submodule tests' '
|
|||||||
git submodule add ./sub
|
git submodule add ./sub
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git config - variable name - submodule and __git_compute_first_level_config_vars_for_section' '
|
test_expect_success 'git config set - variable name - submodule and __git_compute_first_level_config_vars_for_section' '
|
||||||
test_completion "git config submodule." <<-\EOF
|
test_completion "git config set submodule." <<-\EOF
|
||||||
submodule.active Z
|
submodule.active Z
|
||||||
submodule.alternateErrorStrategy Z
|
submodule.alternateErrorStrategy Z
|
||||||
submodule.alternateLocation Z
|
submodule.alternateLocation Z
|
||||||
@ -2788,8 +2816,8 @@ test_expect_success 'git config - variable name - submodule and __git_compute_fi
|
|||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git config - variable name - __git_compute_second_level_config_vars_for_section' '
|
test_expect_success 'git config set - variable name - __git_compute_second_level_config_vars_for_section' '
|
||||||
test_completion "git config submodule.sub." <<-\EOF
|
test_completion "git config set submodule.sub." <<-\EOF
|
||||||
submodule.sub.url Z
|
submodule.sub.url Z
|
||||||
submodule.sub.update Z
|
submodule.sub.update Z
|
||||||
submodule.sub.branch Z
|
submodule.sub.branch Z
|
||||||
@ -2799,8 +2827,8 @@ test_expect_success 'git config - variable name - __git_compute_second_level_con
|
|||||||
EOF
|
EOF
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git config - value' '
|
test_expect_success 'git config set - value' '
|
||||||
test_completion "git config color.pager " <<-\EOF
|
test_completion "git config set color.pager " <<-\EOF
|
||||||
false Z
|
false Z
|
||||||
true Z
|
true Z
|
||||||
EOF
|
EOF
|
||||||
|
Reference in New Issue
Block a user