Re: [PATCH v4 0/3] completion of 'git [-C <dir>] diff'
"D. Ben Knoble" <[email protected]>
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <CALnO6CBDqCnYX4ph-BsDEr+TEs+oRbbXKb6rjYmbAaV_6H=HiQ@mail.gmail.com> |
On Fri, Aug 7, 2026 at 2:32 AM Elijah Newren <[email protected]> wrote: > > On Thu, Aug 6, 2026 at 6:38 PM Junio C Hamano <[email protected]> wrote: > > > > 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. > > > > This series teaches the completion machinery to complete revisions > > (unless '--' exists), then tracked paths, and then untracked paths, > > before letting the Bash default kick in. This way, we correctly > > complete 'git diff' command line even when '-C <directory>' is in > > effect. > > Nice. :-) > > > The tests are the only changes relative to v2. In the step where > > tracked paths are completed, v2 did not demonstrate that untracked > > ones are *not* completed at the same time. Now we do by having > > untracked 'file3' next to 'file1' and 'file2' that are tracked. In > > the last step, we demonstrate untracked paths that do not share > > prefix with refs or tracked paths are completed, with or without the > > "-C <dir>" option. > > I found this paragraph slightly hard to parse. I think this means the same as: > > Only the tests changed since v2. The tracked-paths step now also > shows that untracked paths are not mixed in: an untracked 'file3' > next to tracked 'file1'/'file2' means "git diff f" completes only the > latter two. The untracked-paths step shows that an untracked path > which shares no prefix with a ref or tracked path still completes, > with or without "-C ". > > (Not that it matters, since this is just the cover letter, but...) > > > 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 > > I found two minor nits in the first two patches, and didn't spot any > issues with the third patch. Yep, modulo Elijah's comments (many eyes, thanks!) I'm happy with this round. -- D. Ben Knoble