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

Re: [PATCH] completion: optionally disable checkout DWIM

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 21, 2017, 05:01 UTC
Message-ID
<xmqqzifa4amr.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170420201229.fxiylgp2v2v4sz3w@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 10 quoted lines
> When we complete branch names for "git checkout", we also
> complete remote branch names that could trigger the DWIM
> behavior. Depending on your workflow and project, this can
> be either convenient or annoying.
> ...
> This is flexible enough for me, but it's possible somebody would want
> this on a per-repo basis. I don't know that we want to read from `git
> config`, though, because it's relatively expensive to do so. People who
> want per-repo settings are probably better off with a hook that triggers
> when they "cd" around, and sets up their preferences.

Sounds OK. I am kind of surprised that --no-guess is the only way to turn off this dwimming (not in the completion side, but there does not seem to be a way to tell "git checkout" that you do not need that create-missing-branch-out-of-remote-tracking).

Show 32 quoted lines
>  contrib/completion/git-completion.bash | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
> index 1150164d5..f53b18fae 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -28,6 +28,14 @@
>  # completion style.  For example '!f() { : git commit ; ... }; f' will
>  # tell the completion to use commit completion.  This also works with aliases
>  # of form "!sh -c '...'".  For example, "!sh -c ': git commit ; ... '".
> +#
> +# You can set the following environment variables to influence the behavior of
> +# the completion routines:
> +#
> +#   GIT_COMPLETION_CHECKOUT_NO_GUESS
> +#
> +#     When non-empty, do not include "DWIM" suggestions in git-checkout
> +#     completion (e.g., completing "foo" when "origin/foo" exists).
>  
>  case "$COMP_WORDBREAKS" in
>  *:*) : great ;;
> @@ -1248,7 +1256,8 @@ _git_checkout ()
>  		# check if --track, --no-track, or --no-guess was specified
>  		# if so, disable DWIM mode
>  		local flags="--track --no-track --no-guess" track_opt="--track"
> -		if [ -n "$(__git_find_on_cmdline "$flags")" ]; then
> +		if [ -n "$GIT_COMPLETION_CHECKOUT_NO_GUESS" -o \
> +		     -n "$(__git_find_on_cmdline "$flags")" ]; then
>  			track_opt=''
>  		fi
>  		__git_complete_refs $track_opt
Previous: Jeff KingNext: Jeff King
Message 2 of 10 in “completion: optionally disable checkout DWIM”
  1. completion: optionally disable checkout DWIMJeff King, Apr 20, 2017
  2. Junio C HamanoApr 21, 2017
  3. Jeff KingApr 21, 2017
  4. Junio C HamanoApr 21, 2017
  5. SZEDER GáborApr 21, 2017
  6. Jeff KingApr 21, 2017
  7. SZEDER GáborApr 22, 2017
  8. Jacob KellerApr 21, 2017
  9. completion: optionally disable checkout DWIMJeff King, Apr 21, 2017
  10. Brandon WilliamsApr 24, 2017

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.