1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-09 16:06:10 +02:00

Merge branch 'rh/complete-symbolic-ref' into seen

* rh/complete-symbolic-ref:
  completion: add docs on how to add subcommand completions
  completion: improve docs for using __git_complete
  completion: add 'symbolic-ref'
This commit is contained in:
Junio C Hamano 2024-04-26 09:28:43 -07:00
commit 68517df9b3
2 changed files with 51 additions and 3 deletions

View File

@ -31,15 +31,29 @@
# Note that "git" is optional --- '!f() { : commit; ...}; f' would complete
# just like the 'git commit' command.
#
# If you have a command that is not part of git, but you would still
# like completion, you can use __git_complete:
# To add completion for git subcommands that are implemented in external
# scripts, define a function of the form '_git_${subcommand}' while replacing
# all dashes with underscores, and the main git completion will make use of it.
# For example, to add completion for 'git do-stuff' (which could e.g. live
# in /usr/bin/git-do-stuff), name the completion function '_git_do_stuff'.
# See _git_show, _git_bisect etc. below for more examples.
#
# If you have a shell command that is not part of git (and is not called as a
# git subcommand), but you would still like git-style completion for it, use
# __git_complete. For example, to use the same completion as for 'git log' also
# for the 'gl' command:
#
# __git_complete gl git_log
#
# Or if it's a main command (i.e. git or gitk):
# Or if the 'gk' command should be completed the same as 'gitk':
#
# __git_complete gk gitk
#
# The second parameter of __git_complete gives the completion function; it is
# resolved as a function named "$2", or "__$2_main", or "_$2" in that order.
# In the examples above, the actual functions used for completion will be
# _git_log and __gitk_main.
#
# Compatible with bash 3.2.57.
#
# You can set the following environment variables to influence the behavior of
@ -3622,6 +3636,17 @@ _git_svn ()
fi
}
_git_symbolic_ref () {
case "$cur" in
--*)
__gitcomp_builtin symbolic-ref
return
;;
esac
__git_complete_refs
}
_git_tag ()
{
local i c="$__git_cmd_idx" f=0

View File

@ -2518,6 +2518,29 @@ test_expect_success 'complete tree filename with metacharacters' '
EOF
'
test_expect_success 'symbolic-ref completes builtin options' '
test_completion "git symbolic-ref --d" <<-\EOF
--delete Z
EOF
'
test_expect_success 'symbolic-ref completes short ref names' '
test_completion "git symbolic-ref foo m" <<-\EOF
main Z
mybranch Z
mytag Z
EOF
'
test_expect_success 'symbolic-ref completes full ref names' '
test_completion "git symbolic-ref foo refs/" <<-\EOF
refs/heads/main Z
refs/heads/mybranch Z
refs/tags/mytag Z
refs/tags/A Z
EOF
'
test_expect_success PERL 'send-email' '
test_completion "git send-email --cov" <<-\EOF &&
--cover-from-description=Z