SZEDER Gábor <> writes:

>> It is somewhat annoying that "git diff gi<TAB>" stops at expanding
>> it to "git diff git" and then upon another "git diff git<TAB>"
>> offers tags whose names begin with "git" (e.g. gitgui-0.10.0) but
>> the pathname git.c is not included in the choices.  My wish was to
>> take the union in such a fairly limited case.  I tend to agree with
>> you that "git diff <TAB>" that expands to all refs and pathnames
>> would be useless, but so is expansion to all pathnames (or refnames
>> for that matter).
> ... or trying to complete a branch name starting with a 'v', and then
> getting all the vx.y.z tags.
> If you know you want git.c, then you can force filename completion
> either by entering "--" before hitting tab...

Yes, that is exactly why I said "the current completion code already
works better than reasonably well, at least for me" in the
concluding part of my message.

Regarding that rr/complete-difftool topic, let's revert the tip 2
commits (the "ls-tree, archive and show" one, and the follow-up
resurrection of __git_complete_file) with this:

    Revert 77c1305 and 3c3b46b
    As explained by SZEDER Gábor in $gmane/226272, git_complete_file
    helper is about completing <tree-ish>, taking <commit> at the tips
    of refs and also understanding <tree-ish>:<path> notation, and
    changing "archive" and "ls-tree" to use git_complete_revlist_file
    that in addition is meant to expand A..B range notation was a
    Signed-off-by: Junio C Hamano <>

and then queue this on top of d8517cc6670d (completion: difftool
takes both revs and files, 2013-06-02), so that the attached and
d8517cc6670d will be the only two commits that graduate to 'master'
from this topic.

-- >8 --
From: Ramkumar Ramachandra <>
Date: Sun, 2 Jun 2013 19:33:42 +0530
Subject: [PATCH] completion: show can take both revlist and paths

The 'git show' completion uses __git_complete_file (aliased to
__git_complete_revlist_file), because accepts <tree-ish>:<path> as
well as <commit-ish>.  But the command also accepts range of commits
in A..B notation, so using __git_complete_revlist_file is more

There still remain two users of __git_complete_file, completions for
"archive" and "ls-tree".  As these commands do not take range
notation, and "git show" no longer uses __git_complete_file, the
implementation of can be updated not to complete ranges, but that is
a separate topic.

Signed-off-by: Ramkumar Ramachandra <>
Signed-off-by: Junio C Hamano <>
 contrib/completion/git-completion.bash | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/completion/git-completion.bash 
index 1b4b0f9..b9dfc3b 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2360,7 +2360,7 @@ _git_show ()
-       __git_complete_file
+       __git_complete_revlist_file
 _git_show_branch ()

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to