git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: What's cooking in git.git (Feb 2010, #05; Sun, 21)

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 22, 2010, 20:21 UTC
Message-ID
<7viq9paunm.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20100222105203.GB16531@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 13 quoted lines
> On Sun, Feb 21, 2010 at 04:19:18PM -0800, Junio C Hamano wrote:
>
>> * cp/add-u-pathspec (2010-02-09) 2 commits
>>  - test for add with non-existent pathspec
>>  - git add -u: die on unmatched pathspec
>> 
>> I am a bit torn on this one.  Traditionally we never complained on
>> unmatched pathspec when talking about tracked files.  If we were to go
>
> True, though most of those pathspecs for tracked files are when viewing
> diffs. It seems more inconsistent here because "git add foo" complains
> but "git add -u foo" does not. So I think this one is definitely worth
> fixing.
One problem is that it would be adding a new inconsistency.

"git diff" does not complain but "git add -u" will complain if we make this change, but "add -u" is about updating the path that "git diff" reports as different.

That is why you would need to make "git diff" and friends _also_ complain, if we want to add a new consistency between "add" and "add -u" without breaking the existing consistency between "diff" and "add -u". I do not have a problem with making "diff" also complain for an unmatched pathspec as a longer term direction, but we need to be careful (e.g. How should this interact with "git log -- pathspec"?)

In any case, teaching "diff-files" about unmatched pathspec warning would necessitate infrastructure change...

Show 5 quoted lines
>> this route, I think we should probably enhance the "run_diff_files" and
>> friends in such a way that they mark matched pathspecs, in a way similar
>> to match_pathspec() in dir.c does, and report unmatched ones based on
>> that result, instead of adding an extra pass to scan the index.  The same
>> goes for pathspec_matches() in builtin-grep.c

Once we have an infrastructure for "diff-files" to notice an unmatching pathspec, "add -u" will notice it, too, without any extra code.

Making "add -u" complain before fixing "diff-files" will have another issue. It will expose a bigger inconsistency that you omitted from my message ;-) The pathspec "git add" without "-u" takes are processed by pathspec match logic of "ls-files" family, but "git add -u" uses pathspec match logic of "diff" family. They have different semantics.

You can say "git add 'frotz/*.c'" but not "git add -u 'frotz/*.c'"; that also needs to be fixed.

Making "add -u" alone complain using a separate throw-away logic that we are sure we will have to discard when we make things consistent throughout the system did not sound very attractive to me. And that is why I was unhappy about the solution.

Previous: Jeff KingNext: Jeff King
Message 12 of 13 in “What's cooking in git.git (Feb 2010, #05; Sun, 21)”
  1. Junio C HamanoFeb 22, 2010
  2. Larry D'AnnaFeb 22, 2010
  3. Johannes SixtFeb 22, 2010
  4. Junio C HamanoFeb 22, 2010
  5. Björn GustavssonFeb 22, 2010
  6. Johannes SchindelinFeb 22, 2010
  7. Thomas RastFeb 22, 2010
  8. Thomas RastFeb 22, 2010
  9. Johannes SchindelinFeb 22, 2010
  10. Jeff KingFeb 22, 2010
  11. Jeff KingFeb 22, 2010
  12. Junio C HamanoFeb 22, 2010
  13. Jeff KingFeb 23, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.