Re: [PATCH] completion: complete tracked paths for 'git diff'
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 3, 2026, 01:07 UTC
- Message-ID
- <xmqq8q6o106k.fsf@gitster.g>
- In-Reply-To
- <xmqqcxw010me.fsf@gitster.g>
Junio C Hamano <gitster@pobox.com> writes:
Show 13 quoted lines
> When completing arguments for 'git diff', _git_diff() delegates to > __git_complete_revlist_file(), which only completes revision > references. This is good [*], as mixing both revs and paths in a > single list to have the user pick is simply too confusing. > > If no reference matches, or if '--' is given, however, _git_diff() > leaves COMPREPLY empty. Bash then falls back to default filename > completion in $PWD. This fails when 'git -C <path>' is used because > $PWD is not the target repository. > > Update _git_diff() to use __git_complete_index_file() when '--' is > present, or when revision reference completion yields no matching > candidates, so that tracked paths are offered as candidates.
This changes behavior even in the case where '-C <there>' is not used. The new behavior omits untracked paths from suggestions, which is clearly better behavior.
I'll add the above paragraph to the proposed log message when I queue this on 'seen'.