Thread (34 messages) flat view 34 messages, 4 authors, 2026-08-12

Re: [PATCH v3 0/3] completion of 'git [-C <dir>] diff'

From: D. Ben Knoble <hidden>
Date: 2026-08-06 11:31:09

Hi Junio,

On Wed, Aug 5, 2026 at 3:44 PM Junio C Hamano [off-list ref] wrote:
Here is another reroll.

The primary motivation for this topic is that the command-line
completion of 'git diff' does not handle paths (unlike 'git status'
and 'git add') and instead relies on the default behavior of Bash
command-line completion, which completes files in $PWD; this does
not work at all with the '-C <directory>' option.

Previous iterations of the patch taught the completion script to
offer tracked paths that match the prefix before <TAB> to improve
the situation.

This time, we also complete untracked paths ourselves, so that even
the following commands, which compare files like 'file[12]' that are
not under the control of Git in a different directory, are
completed:

        $ git -C not-a-git-dir diff fil<TAB>
        $ git -C not-a-git-dir diff --no-index fil<TAB>

 1/3: completion: no-op refactoring of diff completion
 2/3: completion: complete tracked paths for 'git diff'
 3/3: completion: 'git diff' completes untracked paths as a last resort

 contrib/completion/git-completion.bash | 69 +++++++++++++++-----------
 t/t9902-completion.sh                  | 59 ++++++++++++++++++++++
 2 files changed, 100 insertions(+), 28 deletions(-)
Left one comment on 3/3, but the rest looks good!

-- 
D. Ben Knoble
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help