All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacob Keller <jacob.e.keller@intel.com>
To: git@vger.kernel.org
Cc: Jonathan Nieder <jrnieder@gmail.com>,
	Jacob Keller <jacob.keller@gmail.com>
Subject: [PATCH 03/11] completion: add test highlighting subpar git switch --track completion
Date: Fri, 24 Apr 2020 19:20:36 -0700	[thread overview]
Message-ID: <20200425022045.1089291-4-jacob.e.keller@intel.com> (raw)
In-Reply-To: <20200425022045.1089291-1-jacob.e.keller@intel.com>

From: Jacob Keller <jacob.keller@gmail.com>

If git switch is called with --track, it will attempts to DWIM into
creating a local tracking branch that tracks the provided remote branch.
It seems reasonable that, to support this behavior, we should only
complete remote branches in the form "<remote>/<branch>".

Indeed, current completion is not just sub-par, but could almost be
described as entirely useless.

  $git switch --track <TAB>

will only report *local* branch names. Indeed a new test case highlights
this quite well:

  --- expected    2020-04-25 00:25:34.424965326 +0000
  +++ out_sorted  2020-04-25 00:25:34.441965370 +0000
  @@ -1,2 +1,2 @@
  -other/branch-in-other
  -other/master-in-other
  +master
  +matching-branch
  not ok 100 - git switch - with --track, complete only remote branches # TODO known breakage

Understanding exactly what causes this is not that simple.

First we enable DWIM output by default. Then, if "--track",
"--no-track", or "--no-guess" is enabled on the command line, we disable
DWIM. This makes sense, because --track should not include the default
"DWIM" remote branch names.

Following this, there is a check for "--detach". If "--detach" is *not*
present, then we set only_local_ref=y. this is done because we would
like to avoid printing remote references. This immediately seems wrong
because --track should allow completing remote references.

Finally, if only_local_ref is 'y', and the track_opt for DWIM logic is
disabled, we complete only local branches. This occurs because --track
disabled track_opt, and not providing --detach sets only_local_ref to
'y'.

Fixing this correctly is not trivial, so it is left to a follow up
change.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
---
 t/t9902-completion.sh | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
index af4661cbcc73..002223160058 100755
--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -1271,6 +1271,16 @@ test_expect_success 'git switch - with --detach, complete all references' '
 	EOF
 '
 
+# TODO: Since --track on its own will perform a DWIM to extract the local
+# branch name, we should complete only the remote branches with their remote
+# name.
+test_expect_failure 'git switch - with --track, complete only remote branches' '
+	test_completion "git switch --track " <<-\EOF
+	other/branch-in-other Z
+	other/master-in-other Z
+	EOF
+'
+
 test_expect_success 'git switch - with --no-track, complete only local branch names' '
 	test_completion "git switch --no-track " <<-\EOF
 	master Z
-- 
2.25.2


  parent reply	other threads:[~2020-04-25  2:20 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-25  2:20 [PATCH 00/11] refactor git switch completion Jacob Keller
2020-04-25  2:20 ` [PATCH 01/11] completion: add some simple test cases for " Jacob Keller
2020-04-25  2:20 ` [PATCH 02/11] completion: add test showing subpar " Jacob Keller
2020-04-25  2:20 ` Jacob Keller [this message]
2020-04-25  2:20 ` [PATCH 04/11] completion: add tests showing lack of support for git switch -c/-C Jacob Keller
2020-04-25  2:20 ` [PATCH 05/11] completion: add test showing subpar completion for git switch --orphan Jacob Keller
2020-04-27 23:34   ` Junio C Hamano
2020-04-28  2:12     ` Jacob Keller
2020-04-28  2:20     ` Jacob Keller
2020-04-28 16:24       ` Junio C Hamano
2020-04-28 17:32         ` Jacob Keller
2020-04-28 18:10           ` Junio C Hamano
2020-04-28 18:45             ` Jacob Keller
2020-04-28 19:16               ` Junio C Hamano
2020-04-28 20:41                 ` Jacob Keller
2020-04-28 20:57                   ` Junio C Hamano
2020-04-25  2:20 ` [PATCH 05/11] completion: remove " Jacob Keller
2020-04-25  2:20 ` [PATCH 06/11] completion: rename --track option of __git_complete_refs Jacob Keller
2020-04-25  2:20 ` [PATCH 07/11] completion: extract function __git_dwim_remote_heads Jacob Keller
2020-04-25  2:20 ` [PATCH 08/11] completion: perform DWIM logic directly in __git_complete_refs Jacob Keller
2020-04-25  2:20 ` [PATCH 09/11] completion: fix completion for git switch with no options Jacob Keller
2020-04-25  2:20 ` [PATCH 10/11] completion: recognize -c/-C when completing for git switch Jacob Keller
2020-04-25  2:20 ` [PATCH 11/11] completion: complete remote branches for git switch --track Jacob Keller
2020-04-25 22:14 ` [PATCH 00/11] refactor git switch completion Jacob Keller
2020-04-30 22:56 ` Junio C Hamano
2020-05-01 21:53   ` Jacob Keller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200425022045.1089291-4-jacob.e.keller@intel.com \
    --to=jacob.e.keller@intel.com \
    --cc=git@vger.kernel.org \
    --cc=jacob.keller@gmail.com \
    --cc=jrnieder@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.