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?
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