From: Phillip Wood Date: Mon, 02 Jun 2025 10:07:17 GMT Subject: Re: [BUG]: Non-matching exclude pathspec causes an error in empty repository when the flag "--update" is present Message-ID: In-Reply-To: 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