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

Re: [PATCH v2 2/5] completion: complete 'submodule.*' config variables

From
Patrick Steinhardt <ps@pks.im>
Date
Feb 8, 2024, 07:42 UTC
Message-ID
<ZcSF0Uw0xxlJXRlH@tanuki>
In-Reply-To
<426374ff9b3820512f73ef094f9533e6a1ea5cad.1706534882.git.gitgitgadget@gmail.com>
On Mon, Jan 29, 2024 at 01:27:58PM +0000, Philippe Blain via GitGitGadget wrote:
Show 37 quoted lines
> From: Philippe Blain <levraiphilippeblain@gmail.com>
> 
> In the Bash completion script, function
> __git_complete_config_variable_name completes config variables and has
> special logic to deal with config variables involving user-defined
> names, like branch.<name>.* and remote.<name>.*.
> 
> This special logic is missing for submodule-related config variables.
> Add the appropriate branches to the case statement, making use of the
> in-tree '.gitmodules' to list relevant submodules.
> 
> Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
> ---
>  contrib/completion/git-completion.bash | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 159a4fd8add..8af9bc3f4e1 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -2803,6 +2803,19 @@ __git_complete_config_variable_name ()
>  		__gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "${sfx:- }"
>  		return
>  		;;
> +	submodule.*.*)
> +		local pfx="${cur_%.*}."
> +		cur_="${cur_##*.}"
> +		__gitcomp "url update branch fetchRecurseSubmodules ignore active" "$pfx" "$cur_" "$sfx"
> +		return
> +		;;
> +	submodule.*)
> +		local pfx="${cur_%.*}."
> +		cur_="${cur_#*.}"
> +		__gitcomp_nl "$(__git config -f "$(__git rev-parse --show-toplevel)/.gitmodules" --get-regexp 'submodule.*.path' | awk -F. '{print $2}')" "$pfx" "$cur_" "."
> +		__gitcomp_nl_append $'alternateErrorStrategy\nfetchJobs\nactive\nalternateLocation\nrecurse\npropagateBranches' "$pfx" "$cur_" "${sfx:- }"
> +		return
> +		;;

Hm, it feels quite awkward that we have to manually massage the gitmodules config like this. But the closest tool I could find is `git submodule status`, which would also end up describing commits in each of the submodules and thus do needless work. And second, it prints submodule paths and not submodule names, so it surfaces the wrong info in the first place.

Ideally, we would create such a tool that makes the information more accessible to us. But that certainly seems out of scope of this patch series.

In any case though it would be nice to add some tests for these new completions.

Patrick
Show 7 quoted lines
>  	url.*.*)
>  		local pfx="${cur_%.*}."
>  		cur_="${cur_##*.}"
> -- 
> gitgitgadget
> 
> 
Previous: Philippe Blain via GitGitGadgetNext: Philippe Blain
Message 10 of 32 in “completion: remove hardcoded config variable names”
  1. 0/5 completion: remove hardcoded config variable namesPhilippe Blain via GitGitGadget, Jan 28, 2024
  2. 1/5 completion: add space after config variable names also in Bash 3Philippe Blain via GitGitGadget, Jan 28, 2024
  3. 2/5 completion: complete 'submodule.*' config variablesPhilippe Blain via GitGitGadget, Jan 28, 2024
  4. 3/5 completion: add and use __git_compute_first_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 28, 2024
  5. 4/5 builtin/help: add --config-all-for-completionPhilippe Blain via GitGitGadget, Jan 28, 2024
  6. 5/5 completion: add an use __git_compute_second_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 28, 2024
  7. 0/5 completion: remove hardcoded config variable namesPhilippe Blain via GitGitGadget, Jan 29, 2024
  8. 1/5 completion: add space after config variable names also in Bash 3Philippe Blain via GitGitGadget, Jan 29, 2024
  9. 2/5 completion: complete 'submodule.*' config variablesPhilippe Blain via GitGitGadget, Jan 29, 2024
  10. Patrick SteinhardtFeb 8, 2024
  11. Philippe BlainFeb 10, 2024
  12. 3/5 completion: add and use __git_compute_first_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 29, 2024
  13. Patrick SteinhardtFeb 8, 2024
  14. Philippe BlainFeb 10, 2024
  15. Junio C HamanoFeb 10, 2024
  16. Philippe BlainFeb 10, 2024
  17. Junio C HamanoFeb 14, 2024
  18. 4/5 builtin/help: add --config-all-for-completionPhilippe Blain via GitGitGadget, Jan 29, 2024
  19. Patrick SteinhardtFeb 8, 2024
  20. Philippe BlainFeb 10, 2024
  21. 5/5 completion: add an use __git_compute_second_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 29, 2024
  22. Patrick SteinhardtFeb 8, 2024
  23. Philippe BlainFeb 10, 2024
  24. Junio C HamanoFeb 7, 2024
  25. Patrick SteinhardtFeb 8, 2024
  26. 0/4 completion: remove hardcoded config variable namesPhilippe Blain via GitGitGadget, Feb 10, 2024
  27. 1/4 completion: add space after config variable names also in Bash 3Philippe Blain via GitGitGadget, Feb 10, 2024
  28. 2/4 completion: complete 'submodule.*' config variablesPhilippe Blain via GitGitGadget, Feb 10, 2024
  29. 3/4 completion: add and use __git_compute_first_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Feb 10, 2024
  30. 4/4 completion: add and use __git_compute_second_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Feb 10, 2024
  31. Patrick SteinhardtFeb 13, 2024
  32. Junio C HamanoFeb 13, 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.