[PATCH 3/4] completion: reflog with implicit "show"
- From
Rubén Justo <rjusto@gmail.com>
- Date
- Jan 26, 2024, 12:53 UTC
- Message-ID
- <5991b58c-770c-4aaa-bce5-f396d9f7f16f@gmail.com>
- In-Reply-To
- <98daf977-dbad-4d3b-a293-6a769895088f@gmail.com>
When no subcommand is specified to "reflog", we assume "show" [1]:
$ git reflog -h
usage: git reflog [show] [<log-options>] [<ref>]
...We are not completing correctly this implicit uses of "show":
With ...
$ git checkout -b default
... we are not completing "default":
$ git reflog def<TAB><TAB>
And we are incorrectly returning the "subcommands" when:
$ git reflog default <TAB><TAB>
delete expire showLet's use __gitcomp_subcommand to correctly handle implicit subcommands.
1. cf39f54efc (git reflog show, 2007-02-08)
Signed-off-by: Rubén Justo <rjusto@gmail.com> --- contrib/completion/git-completion.bash | 9 ++++----- t/t9902-completion.sh | 8 ++++++++ 2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 5f2e904b56..c41f25aa80 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2448,13 +2448,12 @@ _git_rebase () _git_reflog () { local subcommands="show delete expire" - local subcommand="$(__git_find_on_cmdline "$subcommands")" - if [ -z "$subcommand" ]; then - __gitcomp "$subcommands" - else - __git_complete_refs + if __gitcomp_subcommand "$subcommands"; then + return fi + + __git_complete_refs } __git_send_email_confirm_options="always never auto cc compose" diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index aa9a614de3..231e17f378 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -2618,6 +2618,14 @@ test_expect_success 'git clone --config= - value' ' EOF ' +test_expect_success 'git reflog show' ' + test_when_finished "git checkout -" && + git checkout -b shown && + test_completion "git reflog sho" "show " && + test_completion "git reflog show sho" "shown " && + test_completion "git reflog shown sho" "shown " +' + test_expect_success 'options with value' ' test_completion "git merge -X diff-algorithm=" <<-\EOF
-- 2.43.0