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

[PATCH 06/11] completion: rename --track option of __git_complete_refs

From
Jacob Keller <jacob.e.keller@intel.com>
Date
Apr 25, 2020, 02:20 UTC
Message-ID
<20200425022045.1089291-8-jacob.e.keller@intel.com>
In-Reply-To
<20200425022045.1089291-1-jacob.e.keller@intel.com>
From: Jacob Keller <jacob.keller@gmail.com>

The __git_complete_refs uses the "--track" option to specify when to enable listing of unique remote branches which could be used by the DWIMery of git checkout and git switch.

This is confusing, because both git checkout and git switch have a --track option. This makes looking at the completion code for these two functions confusing.

Rename this parameter to --dwim. 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, but do not use it in our own completion code.

This reduces the confusion when seeing --track in the _git_switch() and _git_checkout() completion functions.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
---
 contrib/completion/git-completion.bash | 28 ++++++++++++++------------
 1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 08d3406cf3e4..02dc1203559c 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
 }
@@ -2223,7 +2225,7 @@ _git_switch ()
 		__gitcomp_builtin switch
 		;;
 	*)
-		local track_opt="--track" only_local_ref=n
+		local dwim_opt="--dwim" only_local_ref=n
 
 		# --orphan is used to create a branch disconnected from the
 		# current history, based on the empty tree. Since the only
@@ -2237,24 +2239,24 @@ _git_switch ()
 		# if so, disable DWIM mode
 		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
-- 
2.25.2
Previous: Jacob KellerNext: Jacob Keller
Message 11 of 26 in “refactor git switch completion”
  1. 00/11 refactor git switch completionJacob Keller, Apr 25, 2020
  2. 01/11 completion: add some simple test cases for git switch completionJacob Keller, Apr 25, 2020
  3. 02/11 completion: add test showing subpar git switch completionJacob Keller, Apr 25, 2020
  4. 03/11 completion: add test highlighting subpar git switch --track completionJacob Keller, Apr 25, 2020
  5. 04/11 completion: add tests showing lack of support for git switch -c/-CJacob Keller, Apr 25, 2020
  6. 09/11 completion: fix completion for git switch with no optionsJacob Keller, Apr 25, 2020
  7. 11/11 completion: complete remote branches for git switch --trackJacob Keller, Apr 25, 2020
  8. 08/11 completion: perform DWIM logic directly in __git_complete_refsJacob Keller, Apr 25, 2020
  9. 10/11 completion: recognize -c/-C when completing for git switchJacob Keller, Apr 25, 2020
  10. 07/11 completion: extract function __git_dwim_remote_headsJacob Keller, Apr 25, 2020
  11. 06/11 completion: rename --track option of __git_complete_refsJacob Keller, Apr 25, 2020
  12. 05/11 completion: remove completion for git switch --orphanJacob Keller, Apr 25, 2020
  13. 05/11 completion: add test showing subpar completion for git switch --orphanJacob Keller, Apr 25, 2020
  14. Junio C HamanoApr 27, 2020
  15. Jacob KellerApr 28, 2020
  16. Jacob KellerApr 28, 2020
  17. Junio C HamanoApr 28, 2020
  18. Jacob KellerApr 28, 2020
  19. Junio C HamanoApr 28, 2020
  20. Jacob KellerApr 28, 2020
  21. Junio C HamanoApr 28, 2020
  22. Jacob KellerApr 28, 2020
  23. Junio C HamanoApr 28, 2020
  24. Jacob KellerApr 25, 2020
  25. Junio C HamanoApr 30, 2020
  26. Jacob KellerMay 1, 2020

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.