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

[PATCH v6 2/7] completion: bisect: complete bad, new, old, and help subcommands

From
Britton Leo Kerin <britton.kerin@gmail.com>
Date
Feb 6, 2024, 21:50 UTC
Message-ID
<20240206215048.488344-3-britton.kerin@gmail.com>
In-Reply-To
<20240206215048.488344-1-britton.kerin@gmail.com>

The bad, new, old and help subcommands to git-bisect(1) are not completed.

Add the bad, new, old, and help subcommands to the appropriate lists such that the commands and their possible ref arguments are completed. Add tests.

Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com>
---
 contrib/completion/git-completion.bash |  4 +-
 t/t9902-completion.sh                  | 71 ++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 185b47d802..06d0b156e7 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1449,7 +1449,7 @@ _git_bisect ()
 {
 	__git_has_doubledash && return
 
-	local subcommands="start bad good skip reset visualize replay log run"
+	local subcommands="start bad new good old skip reset visualize replay log run help"
 	local subcommand="$(__git_find_on_cmdline "$subcommands")"
 	if [ -z "$subcommand" ]; then
 		__git_find_repo_path
@@ -1462,7 +1462,7 @@ _git_bisect ()
 	fi
 
 	case "$subcommand" in
-	bad|good|reset|skip|start)
+	bad|new|good|old|reset|skip|start)
 		__git_complete_refs
 		;;
 	*)
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index a5d4e900a2..7388c892cf 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -1264,6 +1264,77 @@ test_expect_success 'git switch - with no options, complete local branches and u
 	EOF
 '
 
+test_expect_success 'git bisect - when not bisecting, complete only replay and start subcommands' '
+	test_completion "git bisect " <<-\EOF
+	replay Z
+	start Z
+	EOF
+'
+
+test_expect_success 'setup for git-bisect tests requiring a repo' '
+	git init git-bisect &&
+	(
+		cd git-bisect &&
+		echo "initial contents" >file &&
+		git add file &&
+		git commit -am "Initial commit" &&
+		git tag initial &&
+		echo "new line" >>file &&
+		git commit -am "First change" &&
+		echo "another new line" >>file &&
+		git commit -am "Second change" &&
+		git tag final
+	)
+'
+
+test_expect_success 'git bisect - start subcommand arguments before double-dash are completed as revs' '
+	(
+		cd git-bisect &&
+		test_completion "git bisect start " <<-\EOF
+		HEAD Z
+		final Z
+		initial Z
+		master Z
+		EOF
+	)
+'
+
+# Note that these arguments are <pathspec>s, which in practice the fallback
+# completion (not the git completion) later ends up completing as paths.
+test_expect_success 'git bisect - start subcommand arguments after double-dash are not completed' '
+	(
+		cd git-bisect &&
+		test_completion "git bisect start final initial -- " ""
+	)
+'
+
+test_expect_success 'setup for git-bisect tests requiring ongoing bisection' '
+	(
+		cd git-bisect &&
+		git bisect start --term-new=custom_new --term-old=custom_old final initial
+	)
+'
+
+test_expect_success 'git-bisect - when bisecting all subcommands are candidates' '
+	(
+		cd git-bisect &&
+		test_completion "git bisect " <<-\EOF
+		start Z
+		bad Z
+		new Z
+		good Z
+		old Z
+		skip Z
+		reset Z
+		visualize Z
+		replay Z
+		log Z
+		run Z
+		help Z
+		EOF
+	)
+'
+
 test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
 	test_completion "git checkout " <<-\EOF
 	HEAD Z
-- 
2.43.0
Previous: Britton Leo KerinNext: Britton Leo Kerin
Message 46 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.