]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: bisect: recognize but do not complete view subcommand
authorBritton Leo Kerin <britton.kerin@gmail.com>
Tue, 6 Feb 2024 21:50:48 +0000 (12:50 -0900)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 Feb 2024 23:11:46 +0000 (15:11 -0800)
The "view" alias for the visualize subcommand is neither completed nor
recognized.  It's undesirable to complete it because it's first letters
are the same as for visualize, making completion less rather than more
efficient without adding much in the way of interface discovery.
However, it needs to be recognized in order to enable log option
completion for it.

Recognize but do not complete the view command by creating and using
separate lists of completable_subcommands and all_subcommands.  Add
tests.

Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash
t/t9902-completion.sh

index 5337ae4ce2b7982c3bdf5df36507e3cdce8e87ff..0734debc11294a90572bb928c8cca2184518256d 100644 (file)
@@ -1462,12 +1462,19 @@ _git_bisect ()
        # more usual bad/new/good/old because git bisect gives a good error
        # message if these are given when not in use, and that's better than
        # silent refusal to complete if the user is confused.
-       local subcommands="start bad new $term_bad good old $term_good terms skip reset visualize replay log run help"
-       local subcommand="$(__git_find_on_cmdline "$subcommands")"
+       #
+       # We want to recognize 'view' but not complete it, because it overlaps
+       # with 'visualize' too much and is just an alias for it.
+       #
+       local completable_subcommands="start bad new $term_bad good old $term_good terms skip reset visualize replay log run help"
+       local all_subcommands="$completable_subcommands view"
+
+       local subcommand="$(__git_find_on_cmdline "$all_subcommands")"
+
        if [ -z "$subcommand" ]; then
                __git_find_repo_path
                if [ -f "$__git_repo_path"/BISECT_START ]; then
-                       __gitcomp "$subcommands"
+                       __gitcomp "$completable_subcommands"
                else
                        __gitcomp "replay start"
                fi
@@ -1490,7 +1497,7 @@ _git_bisect ()
                __gitcomp "--term-good --term-old --term-bad --term-new"
                return
                ;;
-       visualize)
+       visualize|view)
                __git_complete_log_opts
                return
                ;;
index b989388e7ea73100ae4889ddfb64e3252d65fb30..70557eb6844259685d2f94cec00d55d4e81573da 100755 (executable)
@@ -1376,6 +1376,30 @@ test_expect_success 'git-bisect - git-log options to visualize subcommand are ca
        )
 '
 
+test_expect_success 'git-bisect - view subcommand is not a candidate' '
+       (
+               cd git-bisect &&
+               test_completion "git bisect vi" <<-\EOF
+               visualize Z
+               EOF
+       )
+'
+
+test_expect_success 'git-bisect - existing view subcommand is recognized and enables completion of git-log options' '
+       (
+               cd git-bisect &&
+               # The completion used for git-log and here does not complete
+               # every git-log option, so rather than hope to stay in sync
+               # with exactly what it does we will just spot-test here.
+               test_completion "git bisect view --sta" <<-\EOF &&
+               --stat Z
+               EOF
+               test_completion "git bisect view --summar" <<-\EOF
+               --summary Z
+               EOF
+       )
+'
+
 test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
        test_completion "git checkout " <<-\EOF
        HEAD Z