git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/2] completion: add 'symbolic-ref'

From
Patrick Steinhardt <ps@pks.im>
Date
Apr 25, 2024, 06:18 UTC
Message-ID
<Zin1nOSfckSt-H0J@tanuki>
In-Reply-To
<20240424215019.268208-1-rhi@pengutronix.de>
On Wed, Apr 24, 2024 at 11:50:17PM +0200, Roland Hieber wrote:
Show 30 quoted lines
> 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>
> ---
> PATCH v2:
>  - no changes
> 
> PATCH v1: https://lore.kernel.org/git/20240424210549.256256-1-rhi@pengutronix.de/
> ---
>  contrib/completion/git-completion.bash | 11 +++++++++++
>  t/t9902-completion.sh                  | 16 ++++++++++++++++
>  2 files changed, 27 insertions(+)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 75193ded4bde..ffcc55484bcd 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -3581,6 +3581,17 @@ _git_svn ()
>  	fi
>  }
>  
> +_git_symbolic_ref () {
> +	case "$cur" in
> +	--*)
> +		__gitcomp "--delete --quiet --short --recurse --no-recurse"
> +		return
> +		;;

Instead of hardcoding these we may use the `--git-completion-helper` option, which outputs the options for us. We have `__gitcomp_builtin ()` to do this.

Show 23 quoted lines
> +	esac
> +	
> +	__git_complete_refs
> +}
> +
>  _git_tag ()
>  {
>  	local i c="$__git_cmd_idx" f=0
> diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
> index 569cf2310434..a34953da6c96 100755
> --- a/t/t9902-completion.sh
> +++ b/t/t9902-completion.sh
> @@ -2518,6 +2518,22 @@ test_expect_success 'complete tree filename with metacharacters' '
>  	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
> +'
Nit: let's add a newline between those two test cases.
Patrick
Show 16 quoted lines
> +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
> -- 
> 2.39.2
> 
> 
Previous: Roland HieberNext: Roland Hieber
Message 3 of 4 in “completion: add 'symbolic-ref'”
  1. 1/2 completion: add 'symbolic-ref'Roland Hieber, Apr 24, 2024
  2. 2/2 completion: add docs on how to add subcommand completionsRoland Hieber, Apr 24, 2024
  3. Patrick SteinhardtApr 25, 2024
  4. Roland HieberApr 25, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.