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

Re: 'git add' regression in git-1.7?

From
Jeff King <peff@peff.net>
Date
Mar 9, 2010, 22:37 UTC
Message-ID
<20100309223729.GA25265@sigill.intra.peff.net>
In-Reply-To
<7vhbp0ls26.fsf@alter.siamese.dyndns.org>
On Sun, Feb 28, 2010 at 06:00:17PM -0800, Junio C Hamano wrote:
Show 10 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > I'm not sure of the right way to fix this. We can drop further down into
> > the directory hierarchy when doing COLLECT_IGNORED and look for actual
> > files, but that may have a negative performance impact.
> 
> Wouldn't that have negative correctness impact?  I don't see an obvious
> way out, other than perhaps checking the set of pathspecs twice.  One
> thing that might help is to carry the seen[] array a bit longer so that we
> do not have to lose sight of what paths we were given but didn't match.
Sorry for the very late reply. Day-job has kept me busy.

No, we would still be correct if we recurse into the ignored directory _only_ to collect the ignored bits (so we don't even bother if COLLECT_IGNORED isn't set). But what I don't like is that you take a performance hit, because in most cases you won't ever care what's inside those directories. You need to recurse only when:

  - you actually care about all files. git-add does. git-status does not
    (unless you explicitly told it to show directories). So that would
    probably need a flag passed to fill_directory.
  - you have a pathspec that means the contents of the directory might
    be interesting. Right now we check in_pathspec in treat_one_path.
    But I think we would need to recognize that "subdir/file" is
    means "subdir" is in our pathspec (and that "sub*" means the same
    thing).

Your solution does something similar after the fact, but I am not 100% satisfied with it. I'll respond separately to that patch.

-Peff
Previous: Junio C HamanoNext: Jeff King
Message 11 of 17 in “'git add' regression in git-1.7?”
  1. SungHyun NamFeb 19, 2010
  2. Avery PennarunFeb 19, 2010
  3. SungHyun NamFeb 19, 2010
  4. Avery PennarunFeb 19, 2010
  5. Jeff KingFeb 19, 2010
  6. Jeff KingFeb 19, 2010
  7. Jeff KingFeb 19, 2010
  8. Junio C HamanoMar 1, 2010
  9. add: fail "git add ignored-dir/file" without -fJunio C Hamano, Mar 1, 2010
  10. 1/3 t0050: mark non-working test as suchJunio C Hamano, Mar 1, 2010
  11. Jeff KingMar 9, 2010
  12. Jeff KingMar 9, 2010
  13. Junio C HamanoMar 10, 2010
  14. Jeff KingMar 11, 2010
  15. Junio C HamanoMar 14, 2010
  16. Jeff KingMar 14, 2010
  17. Junio C HamanoMar 15, 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.