Re: [RFH] "git -C there add foo" completes, s/add/diff/ does not

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 7, 2024 at 10:35 AM Junio C Hamano <gitster@xxxxxxxxx> wrote:
>
> As some of you may already know, I keep an untracked directory
> called "Meta" at the top-level of the working tree of the Git
> source tree.  This "Meta" directory is actually a single-branch
> clone of the git.kernel.org/pub/scm/git/git.git that checks out
> its "todo" branch, where files like whats-cooking.txt lives.
>
> So, what I often would do is
>
>     $ git -C Meta add whats-cooking.txt
>
> after updating the draft of the next issue of the "What's cooking"
> report.  The command line completion support for "git add" knows how
> to complete this when I stopped typing the above after whats-" and
> hit <TAB>.  It seems that __git_find_repo_path helper function that
> notices "-C there" and discovers the $GIT_DIR, and _git_add helper
> uses __git_complete_index_file that honors the discovered $GIT_DIR
> to find paths in the correct index, which is wonderful.
>
> But the same does not work for the step before I can decide to
> actually "add" the contents, which is to "diff", i.e.
>
>     $ git -C Meta diff whats-<TAB>
>
> does not complete.

I'm not a completions expert, but I think what's happening is that the
completions for `git diff` aren't producing anything, so it (where
"it" here might be the shell?) falls back to just doing normal path
completion. For `git add`, it's checking the `git status` output to
filter the list to things that need to be added, so it respects the
`-C` option when calling into git to get that list, but there's no
such logic for `git diff` (the git-specific logic treats the
[optional] positional argument as a ref, not a file).

>
> Anybody wants to take a crack at it?
>
> Thanks.
>
>





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux