[PATCH v3 13/16] completion: improve handling of --detach in checkout
- From
Jacob Keller <jacob.e.keller@intel.com>
- Date
- May 28, 2020, 18:10 UTC
- Message-ID
- <20200528181048.3509470-14-jacob.e.keller@intel.com>
- In-Reply-To
- <20200528181048.3509470-1-jacob.e.keller@intel.com>
From: Jacob Keller <jacob.keller@gmail.com>
Just like git switch, we should not complete DWIM remote branch names if --detach has been specified. To avoid this, refactor _git_checkout in a similar way to _git_switch.
Note that we don't simply clear dwim_opt when we find -d or --detach, as we will be adding other modes and checks, making this flow easier to follow.
Update the previously failing tests to show that the breakage has been resolved.
Signed-off-by: Jacob Keller <jacob.keller@gmail.com> --- contrib/completion/git-completion.bash | 7 ++++++- t/t9902-completion.sh | 6 ++---- 2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 53afd72d0e4e..38b5a5a0d874 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1489,7 +1489,12 @@ _git_checkout () ;; *) local dwim_opt="$(__git_checkout_default_dwim_mode)" - __git_complete_refs $dwim_opt + + if [ -n "$(__git_find_on_cmdline "-d --detach")" ]; then + __git_complete_refs --mode="refs" + else + __git_complete_refs $dwim_opt --mode="refs" + fi ;; esac } diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index f4f3a3ca3d55..7e56a62a9bb3 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -1372,8 +1372,7 @@ test_expect_success 'git switch - with --detach, complete all references' ' EOF ' -#TODO: checkout --detach incorrectly includes DWIM remote branch names -test_expect_failure 'git checkout - with --detach, complete only references' ' +test_expect_success 'git checkout - with --detach, complete only references' ' test_completion "git checkout --detach " <<-\EOF HEAD Z master Z @@ -1395,8 +1394,7 @@ test_expect_success 'git switch - with -d, complete all references' ' EOF ' -#TODO: checkout -d incorrectly includes DWIM remote branch names -test_expect_failure 'git checkout - with -d, complete only references' ' +test_expect_success 'git checkout - with -d, complete only references' ' test_completion "git checkout -d " <<-\EOF HEAD Z master Z
-- 2.25.2