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

[PATCH v2 3/5] completion: move to maintain define-before-use

From
Britton Leo Kerin <britton.kerin@gmail.com>
Date
Jan 10, 2024, 02:03 UTC
Message-ID
<07e5141e-2305-4c21-9ebb-251fa3b4077f@smtp-relay.sendinblue.com>
In-Reply-To
<20240110020347.673155-1-britton.kerin@gmail.com>
Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com>
---
 contrib/completion/git-completion.bash | 269 ++++++++++++-------------
 1 file changed, 134 insertions(+), 135 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index c16aded36c..63ca8082a4 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1445,6 +1445,140 @@ _git_archive ()
 	__git_complete_file
 }
 
+# Options that go well for log, shortlog and gitk
+__git_log_common_options="
+	--not --all
+	--branches --tags --remotes
+	--first-parent --merges --no-merges
+	--max-count=
+	--max-age= --since= --after=
+	--min-age= --until= --before=
+	--min-parents= --max-parents=
+	--no-min-parents --no-max-parents
+"
+# Options that go well for log and gitk (not shortlog)
+__git_log_gitk_options="
+	--dense --sparse --full-history
+	--simplify-merges --simplify-by-decoration
+	--left-right --notes --no-notes
+"
+# Options that go well for log and shortlog (not gitk)
+__git_log_shortlog_options="
+	--author= --committer= --grep=
+	--all-match --invert-grep
+"
+# Options accepted by log and show
+__git_log_show_options="
+	--diff-merges --diff-merges= --no-diff-merges --dd --remerge-diff
+"
+
+__git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-combined cc remerge r"
+
+__git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd"
+__git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:"
+
+# Check for only porcelain (i.e. not git-rev-list) option (not argument)
+# and selected option argument completions for git-log options and if any
+# are found put them in COMPREPLY.  COMPREPLY must be empty at the start,
+# and will be empty on return if no candidates are found.
+__git_complete_log_opts ()
+{
+	[ -z "$COMPREPLY" ] || return 1   # Precondition
+
+	local merge=""
+	if [ -f "$__git_repo_path/MERGE_HEAD" ]; then
+		merge="--merge"
+	fi
+	case "$prev,$cur" in
+	-L,:*:*)
+		return	# fall back to Bash filename completion
+		;;
+	-L,:*)
+		__git_complete_symbol --cur="${cur#:}" --sfx=":"
+		return
+		;;
+	-G,*|-S,*)
+		__git_complete_symbol
+		return
+		;;
+	esac
+	case "$cur" in
+	--pretty=*|--format=*)
+		__gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
+			" "" "${cur#*=}"
+		return
+		;;
+	--date=*)
+		__gitcomp "$__git_log_date_formats" "" "${cur##--date=}"
+		return
+		;;
+	--decorate=*)
+		__gitcomp "full short no" "" "${cur##--decorate=}"
+		return
+		;;
+	--diff-algorithm=*)
+		__gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
+		return
+		;;
+	--submodule=*)
+		__gitcomp "$__git_diff_submodule_formats" "" "${cur##--submodule=}"
+		return
+		;;
+	--ws-error-highlight=*)
+		__gitcomp "$__git_ws_error_highlight_opts" "" "${cur##--ws-error-highlight=}"
+		return
+		;;
+	--no-walk=*)
+		__gitcomp "sorted unsorted" "" "${cur##--no-walk=}"
+		return
+		;;
+	--diff-merges=*)
+                __gitcomp "$__git_diff_merges_opts" "" "${cur##--diff-merges=}"
+                return
+                ;;
+	--*)
+		__gitcomp "
+			$__git_log_common_options
+			$__git_log_shortlog_options
+			$__git_log_gitk_options
+			$__git_log_show_options
+			--root --topo-order --date-order --reverse
+			--follow --full-diff
+			--abbrev-commit --no-abbrev-commit --abbrev=
+			--relative-date --date=
+			--pretty= --format= --oneline
+			--show-signature
+			--cherry-mark
+			--cherry-pick
+			--graph
+			--decorate --decorate= --no-decorate
+			--walk-reflogs
+			--no-walk --no-walk= --do-walk
+			--parents --children
+			--expand-tabs --expand-tabs= --no-expand-tabs
+			$merge
+			$__git_diff_common_options
+			"
+		return
+		;;
+	-L:*:*)
+		return	# fall back to Bash filename completion
+		;;
+	-L:*)
+		__git_complete_symbol --cur="${cur#-L:}" --sfx=":"
+		return
+		;;
+	-G*)
+		__git_complete_symbol --pfx="-G" --cur="${cur#-G}"
+		return
+		;;
+	-S*)
+		__git_complete_symbol --pfx="-S" --cur="${cur#-S}"
+		return
+		;;
+	esac
+}
+
 _git_bisect ()
 {
 	__git_has_doubledash && return
@@ -2052,141 +2186,6 @@ _git_ls_tree ()
 	__git_complete_file
 }
 
-# Options that go well for log, shortlog and gitk
-__git_log_common_options="
-	--not --all
-	--branches --tags --remotes
-	--first-parent --merges --no-merges
-	--max-count=
-	--max-age= --since= --after=
-	--min-age= --until= --before=
-	--min-parents= --max-parents=
-	--no-min-parents --no-max-parents
-"
-# Options that go well for log and gitk (not shortlog)
-__git_log_gitk_options="
-	--dense --sparse --full-history
-	--simplify-merges --simplify-by-decoration
-	--left-right --notes --no-notes
-"
-# Options that go well for log and shortlog (not gitk)
-__git_log_shortlog_options="
-	--author= --committer= --grep=
-	--all-match --invert-grep
-"
-# Options accepted by log and show
-__git_log_show_options="
-	--diff-merges --diff-merges= --no-diff-merges --dd --remerge-diff
-"
-
-__git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-combined cc remerge r"
-
-__git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd"
-__git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:"
-
-
-# Check for only porcelain (i.e. not git-rev-list) option (not argument)
-# and selected option argument completions for git-log options and if any
-# are found put them in COMPREPLY.  COMPREPLY must be empty at the start,
-# and will be empty on return if no candidates are found.
-__git_complete_log_opts ()
-{
-	[ -z "$COMPREPLY" ] || return 1   # Precondition
-
-	local merge=""
-	if [ -f "$__git_repo_path/MERGE_HEAD" ]; then
-		merge="--merge"
-	fi
-	case "$prev,$cur" in
-	-L,:*:*)
-		return	# fall back to Bash filename completion
-		;;
-	-L,:*)
-		__git_complete_symbol --cur="${cur#:}" --sfx=":"
-		return
-		;;
-	-G,*|-S,*)
-		__git_complete_symbol
-		return
-		;;
-	esac
-	case "$cur" in
-	--pretty=*|--format=*)
-		__gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
-			" "" "${cur#*=}"
-		return
-		;;
-	--date=*)
-		__gitcomp "$__git_log_date_formats" "" "${cur##--date=}"
-		return
-		;;
-	--decorate=*)
-		__gitcomp "full short no" "" "${cur##--decorate=}"
-		return
-		;;
-	--diff-algorithm=*)
-		__gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}"
-		return
-		;;
-	--submodule=*)
-		__gitcomp "$__git_diff_submodule_formats" "" "${cur##--submodule=}"
-		return
-		;;
-	--ws-error-highlight=*)
-		__gitcomp "$__git_ws_error_highlight_opts" "" "${cur##--ws-error-highlight=}"
-		return
-		;;
-	--no-walk=*)
-		__gitcomp "sorted unsorted" "" "${cur##--no-walk=}"
-		return
-		;;
-	--diff-merges=*)
-                __gitcomp "$__git_diff_merges_opts" "" "${cur##--diff-merges=}"
-                return
-                ;;
-	--*)
-		__gitcomp "
-			$__git_log_common_options
-			$__git_log_shortlog_options
-			$__git_log_gitk_options
-			$__git_log_show_options
-			--root --topo-order --date-order --reverse
-			--follow --full-diff
-			--abbrev-commit --no-abbrev-commit --abbrev=
-			--relative-date --date=
-			--pretty= --format= --oneline
-			--show-signature
-			--cherry-mark
-			--cherry-pick
-			--graph
-			--decorate --decorate= --no-decorate
-			--walk-reflogs
-			--no-walk --no-walk= --do-walk
-			--parents --children
-			--expand-tabs --expand-tabs= --no-expand-tabs
-			$merge
-			$__git_diff_common_options
-			"
-		return
-		;;
-	-L:*:*)
-		return	# fall back to Bash filename completion
-		;;
-	-L:*)
-		__git_complete_symbol --cur="${cur#-L:}" --sfx=":"
-		return
-		;;
-	-G*)
-		__git_complete_symbol --pfx="-G" --cur="${cur#-G}"
-		return
-		;;
-	-S*)
-		__git_complete_symbol --pfx="-S" --cur="${cur#-S}"
-		return
-		;;
-	esac
-}
-
 _git_log ()
 {
 	__git_has_doubledash && return
-- 
2.43.0
Previous: Britton Leo KerinNext: Britton Leo Kerin
Message 57 of 58 in “completion: improvements for git-bisect”
  1. 0/6 completion: improvements for git-bisectBritton Leo Kerin, Jan 2, 2024
  2. 0/5 completion: improvements for git-bisectBritton Leo Kerin, Jan 10, 2024
  3. 0/5 completion: improvements for git-bisectBritton Leo Kerin, Jan 18, 2024
  4. 1/5 completion: complete new old actions, start optsBritton Leo Kerin, Jan 18, 2024
  5. Patrick SteinhardtJan 19, 2024
  6. 2/5 completion: git-log opts to bisect visualizeBritton Leo Kerin, Jan 18, 2024
  7. Patrick SteinhardtJan 19, 2024
  8. 3/5 completion: move to maintain define-before-useBritton Leo Kerin, Jan 18, 2024
  9. Patrick SteinhardtJan 19, 2024
  10. 4/5 completion: custom git-bisect termsBritton Leo Kerin, Jan 18, 2024
  11. Patrick SteinhardtJan 19, 2024
  12. 5/5 completion: git-bisect view recognized but not completedBritton Leo Kerin, Jan 18, 2024
  13. Patrick SteinhardtJan 19, 2024
  14. Patrick SteinhardtJan 19, 2024
  15. Junio C HamanoJan 19, 2024
  16. Britton KerinJan 26, 2024
  17. 0/8 completion: improvements for git-bisectBritton Leo Kerin, Jan 28, 2024
  18. 2/8 completion: bisect: complete custom terms and related optionsBritton Leo Kerin, Jan 28, 2024
  19. Patrick SteinhardtFeb 1, 2024
  20. 4/8 completion: new function __git_complete_log_optsBritton Leo Kerin, Jan 28, 2024
  21. 3/8 completion: bisect: complete missing --first-parent and --no-checkout optionsBritton Leo Kerin, Jan 28, 2024
  22. 1/8 completion: bisect: complete bad, new, old, and help subcommandsBritton Leo Kerin, Jan 28, 2024
  23. Patrick SteinhardtFeb 1, 2024
  24. 5/8 completion: log: use __git_complete_log_optsBritton Leo Kerin, Jan 28, 2024
  25. Patrick SteinhardtFeb 1, 2024
  26. 6/8 completion: bisect: complete log opts for visualize subcommandBritton Leo Kerin, Jan 28, 2024
  27. 7/8 completion: bisect: recognize but do not complete view subcommandBritton Leo Kerin, Jan 28, 2024
  28. 8/8 completion: add tests for git-bisectBritton Leo Kerin, Jan 28, 2024
  29. Junio C HamanoJan 30, 2024
  30. Patrick SteinhardtFeb 1, 2024
  31. Patrick SteinhardtFeb 1, 2024
  32. 0/7 completion: improvements for git-bisectBritton Leo Kerin, Feb 6, 2024
  33. 1/7 completion: tests: always use 'master' for default initial branch nameBritton Leo Kerin, Feb 6, 2024
  34. 2/7 completion: bisect: complete bad, new, old, and help subcommandsBritton Leo Kerin, Feb 6, 2024
  35. Patrick SteinhardtFeb 6, 2024
  36. 3/7 completion: bisect: complete custom terms and related optionsBritton Leo Kerin, Feb 6, 2024
  37. Patrick SteinhardtFeb 6, 2024
  38. 4/7 completion: bisect: complete missing --first-parent and --no-checkout optionsBritton Leo Kerin, Feb 6, 2024
  39. 5/7 completion: new function __git_complete_log_optsBritton Leo Kerin, Feb 6, 2024
  40. Patrick SteinhardtFeb 6, 2024
  41. 7/7 completion: bisect: recognize but do not complete view subcommandBritton Leo Kerin, Feb 6, 2024
  42. 6/7 completion: bisect: complete log opts for visualize subcommandBritton Leo Kerin, Feb 6, 2024
  43. Patrick SteinhardtFeb 6, 2024
  44. 0/7 completion: improvements for git-bisectBritton Leo Kerin, Feb 6, 2024
  45. 3/7 completion: bisect: complete custom terms and related optionsBritton Leo Kerin, Feb 6, 2024
  46. 2/7 completion: bisect: complete bad, new, old, and help subcommandsBritton Leo Kerin, Feb 6, 2024
  47. 4/7 completion: bisect: complete missing --first-parent and --no-checkout optionsBritton Leo Kerin, Feb 6, 2024
  48. 1/7 completion: tests: always use 'master' for default initial branch nameBritton Leo Kerin, Feb 6, 2024
  49. 5/7 completion: new function __git_complete_log_optsBritton Leo Kerin, Feb 6, 2024
  50. 7/7 completion: bisect: recognize but do not complete view subcommandBritton Leo Kerin, Feb 6, 2024
  51. 6/7 completion: bisect: complete log opts for visualize subcommandBritton Leo Kerin, Feb 6, 2024
  52. Junio C HamanoFeb 6, 2024
  53. Patrick SteinhardtFeb 7, 2024
  54. 4/5 completion: custom git-bisect termsBritton Leo Kerin, Jan 10, 2024
  55. 1/5 completion: complete new old actions, start optsBritton Leo Kerin, Jan 10, 2024
  56. 2/5 completion: git-log opts to bisect visualizeBritton Leo Kerin, Jan 10, 2024
  57. 3/5 completion: move to maintain define-before-useBritton Leo Kerin, Jan 10, 2024
  58. 5/5 completion: custom git-bisect termsBritton Leo Kerin, Jan 10, 2024

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.