diff options
author | Jacob Keller <jacob.keller@gmail.com> | 2020-05-28 11:10:40 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-05-28 12:53:24 -0700 |
commit | 0408c6b412a6b6f5fa7d1c33424ef00ad8c93533 (patch) | |
tree | a90019c602672cc4668b6781b234a7ea284d1ab4 /contrib/completion | |
parent | completion: add tests showing subpar switch/checkout --orphan logic (diff) | |
download | tgif-0408c6b412a6b6f5fa7d1c33424ef00ad8c93533.tar.xz |
completion: replace overloaded track term for __git_complete_refs
The __git_complete_refs uses the "--track" option to specify when to
enable listing of unique remote branches which are used by the DWIM
logic of git checkout and git switch.
Using the term '--track' here is confusing because the git commands
themselves have '--track' as an argument. Additionally, the completion
logic for _git_switch also checks for --track. Keeping the meaning of
track_opt and --track for __git_complete_refs straight from the --track
git switch and git checkout option is difficult when reading this code.
Use the option '--dwim' instead, indicating this is about enabling or
disabling logic related to DWIM mode. Also rename the local variable
track_opt to dwim_opt to further reduce the confusion when reading the
completion code for _git_switch.
Because it is plausible for users to have developed their own
completions which rely on __git_complete_ref, keep --track as a synonym
for --dwim, even though we no longer use it in any of the core git
completion logic. Add a comment explaining why it remains as an
alternative spelling for --dwim.
Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib/completion')
-rw-r--r-- | contrib/completion/git-completion.bash | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index c21786f2fd..6b44d36998 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -749,7 +749,7 @@ __git_refs () # Usage: __git_complete_refs [<option>]... # --remote=<remote>: The remote to list refs from, can be the name of a # configured remote, a path, or a URL. -# --track: List unique remote branches for 'git checkout's tracking DWIMery. +# --dwim: List unique remote branches for 'git switch's tracking DWIMery. # --pfx=<prefix>: A prefix to be added to each ref. # --cur=<word>: The current ref to be completed. Defaults to the current # word to be completed. @@ -757,12 +757,14 @@ __git_refs () # space. __git_complete_refs () { - local remote track pfx cur_="$cur" sfx=" " + local remote dwim pfx cur_="$cur" sfx=" " while test $# != 0; do case "$1" in --remote=*) remote="${1##--remote=}" ;; - --track) track="yes" ;; + --dwim) dwim="yes" ;; + # --track is an old spelling of --dwim + --track) dwim="yes" ;; --pfx=*) pfx="${1##--pfx=}" ;; --cur=*) cur_="${1##--cur=}" ;; --sfx=*) sfx="${1##--sfx=}" ;; @@ -771,7 +773,7 @@ __git_complete_refs () shift done - __gitcomp_direct "$(__git_refs "$remote" "$track" "$pfx" "$cur_" "$sfx")" + __gitcomp_direct "$(__git_refs "$remote" "$dwim" "$pfx" "$cur_" "$sfx")" } # __git_refs2 requires 1 argument (to pass to __git_refs) @@ -1370,12 +1372,12 @@ _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" + local flags="--track --no-track --no-guess" dwim_opt="--dwim" if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] || [ -n "$(__git_find_on_cmdline "$flags")" ]; then - track_opt='' + dwim_opt='' fi - __git_complete_refs $track_opt + __git_complete_refs $dwim_opt ;; esac } @@ -2225,27 +2227,27 @@ _git_switch () *) # check if --track, --no-track, or --no-guess was specified # if so, disable DWIM mode - local track_opt="--track" only_local_ref=n + local dwim_opt="--dwim" only_local_ref=n if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] || [ -n "$(__git_find_on_cmdline "--track --no-track --no-guess")" ]; then - track_opt='' + dwim_opt='' fi # explicit --guess enables DWIM mode regardless of # $GIT_COMPLETION_CHECKOUT_NO_GUESS if [ -n "$(__git_find_on_cmdline "--guess")" ]; then - track_opt='--track' + dwim_opt='--dwim' fi if [ -z "$(__git_find_on_cmdline "-d --detach")" ]; then only_local_ref=y else # --guess --detach is invalid combination, no # dwim will be done when --detach is specified - track_opt= + dwim_opt= fi - if [ $only_local_ref = y -a -z "$track_opt" ]; then + if [ $only_local_ref = y -a -z "$dwim_opt" ]; then __gitcomp_direct "$(__git_heads "" "$cur" " ")" else - __git_complete_refs $track_opt + __git_complete_refs $dwim_opt fi ;; esac |