Jeff King <peff@xxxxxxxx> writes: > 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). > 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