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

Re: .gitattributes override behavior (possible bug, or documentation bug)

From
DHDakota Hawkins <dakota@dakotahawkins.com>
Date
Mar 21, 2018, 07:36 UTC
Message-ID
<CAHnyXxTf16ukf8CFSfzjQjTEjf5yJXFqK5TnS9KiXZEeAD7dgg@mail.gmail.com>
In-Reply-To
<20180321065212.GC16784@sigill.intra.peff.net>
> I think that ignoring all of /ignore-most/ is much more efficient, since
> we don't have to enumerate the paths inside it at all (which is why the
> current behavior works as it does).

That's definitely true, but I wonder what the impact would be for most cases (even for most cases with large repos and larges sets of ignore files).

Most of my .gitignore patterns weren't hand-written (https://www.gitignore.io/ is pretty neat), but there are a ton of patterns like `dir/`...

I think if I were designing it from scratch and knew what I know now I'd probably argue that behavior should be declarative (`dir/* recurse=false` or something), but we can't really get there from here.

At any rate, would it at least be a good idea to make the "trailing slash halts recursion, won't consider nested .gitignore files" explicit in the `.gitignore` doc? Unless I'm missing it, I don't think that behavior is called out (or at least not called out concisely/in one place). It looks like this is all there is:

    "If the pattern ends with a slash, it is removed for the purpose
of the following description, but it would only find a match with a
directory. In other words, foo/ will match a directory foo and paths
underneath it, but will not match a regular file or a symbolic link
foo (this is consistent with the way how pathspec works in general in
Git)."

Also, I'm not sure what the "following description" is in "it is removed for the purpose of the following description". Is that trying to imply "excluded from the rest of the doc"?

- Dakota
Previous: Jeff KingNext: Dakota Hawkins
Message 19 of 28 in “.gitattributes override behavior (possible bug, or documentation bug)”
  1. Dakota HawkinsMar 20, 2018
  2. Jeff KingMar 20, 2018
  3. Dakota HawkinsMar 20, 2018
  4. Dakota HawkinsMar 20, 2018
  5. Jeff KingMar 20, 2018
  6. Jeff KingMar 20, 2018
  7. doc/gitattributes: mention non-recursive behaviorJeff King, Mar 20, 2018
  8. Dakota HawkinsMar 20, 2018
  9. Duy NguyenMar 20, 2018
  10. Jeff KingMar 21, 2018
  11. Duy NguyenMar 21, 2018
  12. Jeff KingMar 23, 2018
  13. Dakota HawkinsMar 20, 2018
  14. Jeff KingMar 20, 2018
  15. Dakota HawkinsMar 20, 2018
  16. Duy NguyenMar 20, 2018
  17. Dakota HawkinsMar 21, 2018
  18. Jeff KingMar 21, 2018
  19. Dakota HawkinsMar 21, 2018
  20. Dakota HawkinsMar 21, 2018
  21. Jeff KingMar 21, 2018
  22. Dakota HawkinsMar 21, 2018
  23. Jeff KingMar 21, 2018
  24. Junio C HamanoMar 21, 2018
  25. Duy NguyenMar 21, 2018
  26. Junio C HamanoMar 20, 2018
  27. Dakota HawkinsMar 20, 2018
  28. Jeff KingMar 20, 2018

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.