]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: add 'symbolic-ref'
authorRoland Hieber <rhi@pengutronix.de>
Thu, 25 Apr 2024 10:18:42 +0000 (12:18 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 25 Apr 2024 16:23:26 +0000 (09:23 -0700)
Even 'symbolic-ref' is only completed when
GIT_COMPLETION_SHOW_ALL_COMMANDS=1 is set, it currently defaults to
completing file names, which is not very helpful. Add a simple
completion function which completes options and refs.

Signed-off-by: Roland Hieber <rhi@pengutronix.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash
t/t9902-completion.sh

index 444b3efa6303396acabe67a997fbf6a57fe0bcdb..25c2eb697790085025b3a78173fbc9fdbf2b3354 100644 (file)
@@ -3523,6 +3523,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
index b16c284181b8707ed21c85efa0e0a0fea128faae..7773de3469f60cccb5f3e864365621da35137ec8 100755 (executable)
@@ -2495,6 +2495,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