Re: [BUG]: Non-matching exclude pathspec causes an error in empty repository when the flag "--update" is present
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Jun 2, 2025, 10:07 UTC
- Message-ID
- <e790367c-6777-4b4b-97f1-3b3a2cbdb177@gmail.com>
- In-Reply-To
- <CAPM0=yCcOAGsUE8tX-o8ioihr+oWrORD6Tz=WH1OnmhpO+uqrA@mail.gmail.com>
Hi Piotr
On 27/05/2025 09:14, Piotr Siupa wrote:
> I found a regression in version 2.45.0. (It's still present in the > current next - 2.49.0.1266.g31b7d2e469; earlier versions work fine.)
So it 2.44.0 there is no error message?
Show 15 quoted lines
> When you run "git add --update" with an exclude pathspec on an empty > repository, the command fails, showing an error about not being able > to find the specified files. > This happens only if the repository contains no files. Adding any > files (even with "git add -N") or making a non-empty commit fixes the > issue, regardless of whether the added files match the exclude > pathspec or not. > > Way to reproduce: > git init > git add --update -- ':(exclude)foo' > > This results in: > error: pathspec ':(exclude)foo' did not match any file(s) known to git > error: pathspec '.' did not match any file(s) known to git
I agree this is inconsistent with what happens if there are tracked files but I wonder if it is actually better to print an error message when an exclude pattern excludes all the files. We do print an error for
git add -u does-not-exist
because it does not match any file but not with
git add -u ':(exclude)*'
or
git add -u builtin ':(exclude)*.[ch]'
which will never add any files (the builtin directory only contains '.c' and '.h' files). So I think maybe the bug is that we don't print an error when there are tracked files and an exclude pattern matches everything
Best Wishes
Phillip