git ignoring .gitattributes pattern

I believe @Jefromi gave the information needed for me to resolve this with his comments, but is too humble to take the credit, and I'd like to keep my acceptance rating at 100% (quite rightly) so I'll give the answer here:


First edit:

Ok, two things were needed. --worktree-attributes on its own did not work, but when I moved the .gitattributes file into the root dir from the Site dir, then it worked. Again, the Git book implies that the file doesn't need to be in the root for it to work (note: dead link)

... (normally the root of your project)


Much later edit:

Even the latest version of the docs (2.35.1) there are references to .gitattributes files that aren't in the root of the repo (GIT_WORK_TREE / GIT_DIR) e.g.

not in .gitattributes files in working tree subdirectories

Git does not follow symbolic links when accessing a .gitattributes file in the working tree.


I feel a bit let down by those docs (for once). I also think it's not-what-you'd-think behaviour to have to opt in the file when .gitignore just works, IMO.


Not sure this is common case but I had trouble excluding folder tests from source tree which have many nested levels of folders. If I wrote only this line to .gitattributes

tests/* export-ignore

It didnt work and entire directory was remain in archive. The solution was to add wildcards for all subdirs levels:

tests/* export-ignore
tests/*/* export-ignore
tests/*/*/* export-ignore
tests/*/*/*/* export-ignore
tests/*/*/*/*/* export-ignore

With these lines the tests directory finally disappeared from archive.