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

Re: [PATCH 2/2] completion: add missing options for git-merge

From
Junio C Hamano <gitster@pobox.com>
Date
May 22, 2014, 23:59 UTC
Message-ID
<xmqqiooxl60g.fsf@gitster.dls.corp.google.com>
In-Reply-To
<5cfeac0e9b7fb0ff4a2468f30476152fc93f4c16.1400767118.git.john@keeping.me.uk>
John Keeping <john@keeping.me.uk> writes:
> The options added to __git_merge_options are those that git-pull also
> understands, since that variable is used by both commands.  Those added
> directly in _git_merge() are specific to git-merge and are not
> supported by git-pull.
Interesting.

Technically, "are not passed through" would be more accurate than "are not supported", as there may be a very good reason not to call "git merge --frotz" from "git pull --frotz=nitfol". In such a case, "git pull" would _support_ the "--frotz" option, but in a different way and possibly with semantics different from "git merge --frotz" (i.e. option with value vs boolean), and completion of the "--frotz=<value>" option may need to be supported for "git pull" separately without using $__git_merge_options.

The patch makes us think if "--[no-]rerere-autoupdate" should be a pass-thru option. You are unlikely to have seen the same conflict that will arise from a pull from another person for autoupdate to matter, but on the other hand, if you do have seen one and resolved it already, you may want the autoupdate to kick in, so accepting and passing it through may not be an unreasonable thing to do.

As long as we declare that "git pull --abort" does not make any sense (which I think is a sane declaration), the distinction you made in [PATCH 1/2] will always be with us, whether we make "--rerere-autoupdate" pass-thru or not, so in that sense, both patches make sense to me.

Thanks.
Show 30 quoted lines
>
> Reported-by: Haralan Dobrev <hkdobrev@gmail.com>
> Signed-off-by: John Keeping <john@keeping.me.uk>
> ---
>  contrib/completion/git-completion.bash | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index ff97c20..019026e 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -1476,6 +1476,8 @@ _git_log ()
>  __git_merge_options="
>  	--no-commit --no-stat --log --no-log --squash --strategy
>  	--commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit
> +	--verify-signatures --no-verify-signatures --gpg-sign
> +	--quiet --verbose --progress --no-progress
>  "
>  
>  _git_merge ()
> @@ -1484,7 +1486,8 @@ _git_merge ()
>  
>  	case "$cur" in
>  	--*)
> -		__gitcomp "$__git_merge_options"
> +		__gitcomp "$__git_merge_options
> +			--rerere-autoupdate --no-rerere-autoupdate --abort"
>  		return
>  	esac
>  	__gitcomp_nl "$(__git_refs)"
Previous: John Keeping
Message 4 of 4 in “Bash completion: merge --abort”
  1. Haralan DobrevMay 19, 2014
  2. 1/2 completion: add a note that merge options are sharedJohn Keeping, May 22, 2014
  3. 2/2 completion: add missing options for git-mergeJohn Keeping, May 22, 2014
  4. Junio C HamanoMay 22, 2014

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.