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>
This commit is contained in:
Jacob Keller
2020-05-28 11:10:40 -07:00
committed by Junio C Hamano
parent c81ca56bca
commit 0408c6b412

View File

@ -749,7 +749,7 @@ __git_refs ()
# Usage: __git_complete_refs [<option>]... # Usage: __git_complete_refs [<option>]...
# --remote=<remote>: The remote to list refs from, can be the name of a # --remote=<remote>: The remote to list refs from, can be the name of a
# configured remote, a path, or a URL. # 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. # --pfx=<prefix>: A prefix to be added to each ref.
# --cur=<word>: The current ref to be completed. Defaults to the current # --cur=<word>: The current ref to be completed. Defaults to the current
# word to be completed. # word to be completed.
@ -757,12 +757,14 @@ __git_refs ()
# space. # space.
__git_complete_refs () __git_complete_refs ()
{ {
local remote track pfx cur_="$cur" sfx=" " local remote dwim pfx cur_="$cur" sfx=" "
while test $# != 0; do while test $# != 0; do
case "$1" in case "$1" in
--remote=*) remote="${1##--remote=}" ;; --remote=*) remote="${1##--remote=}" ;;
--track) track="yes" ;; --dwim) dwim="yes" ;;
# --track is an old spelling of --dwim
--track) dwim="yes" ;;
--pfx=*) pfx="${1##--pfx=}" ;; --pfx=*) pfx="${1##--pfx=}" ;;
--cur=*) cur_="${1##--cur=}" ;; --cur=*) cur_="${1##--cur=}" ;;
--sfx=*) sfx="${1##--sfx=}" ;; --sfx=*) sfx="${1##--sfx=}" ;;
@ -771,7 +773,7 @@ __git_complete_refs ()
shift shift
done 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) # __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 # check if --track, --no-track, or --no-guess was specified
# if so, disable DWIM mode # 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" ] || if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] ||
[ -n "$(__git_find_on_cmdline "$flags")" ]; then [ -n "$(__git_find_on_cmdline "$flags")" ]; then
track_opt='' dwim_opt=''
fi fi
__git_complete_refs $track_opt __git_complete_refs $dwim_opt
;; ;;
esac esac
} }
@ -2225,27 +2227,27 @@ _git_switch ()
*) *)
# check if --track, --no-track, or --no-guess was specified # check if --track, --no-track, or --no-guess was specified
# if so, disable DWIM mode # 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" ] || if [ "$GIT_COMPLETION_CHECKOUT_NO_GUESS" = "1" ] ||
[ -n "$(__git_find_on_cmdline "--track --no-track --no-guess")" ]; then [ -n "$(__git_find_on_cmdline "--track --no-track --no-guess")" ]; then
track_opt='' dwim_opt=''
fi fi
# explicit --guess enables DWIM mode regardless of # explicit --guess enables DWIM mode regardless of
# $GIT_COMPLETION_CHECKOUT_NO_GUESS # $GIT_COMPLETION_CHECKOUT_NO_GUESS
if [ -n "$(__git_find_on_cmdline "--guess")" ]; then if [ -n "$(__git_find_on_cmdline "--guess")" ]; then
track_opt='--track' dwim_opt='--dwim'
fi fi
if [ -z "$(__git_find_on_cmdline "-d --detach")" ]; then if [ -z "$(__git_find_on_cmdline "-d --detach")" ]; then
only_local_ref=y only_local_ref=y
else else
# --guess --detach is invalid combination, no # --guess --detach is invalid combination, no
# dwim will be done when --detach is specified # dwim will be done when --detach is specified
track_opt= dwim_opt=
fi 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" " ")" __gitcomp_direct "$(__git_heads "" "$cur" " ")"
else else
__git_complete_refs $track_opt __git_complete_refs $dwim_opt
fi fi
;; ;;
esac esac