Git Ignore And Attribute Files Performance
How do you organize your .gitignore file(s)?
Previously, I preferred one .gitignore file in the repositorys root for some specific reasons:
- One place to check for and update
Also, I always added (repository-)absolute paths in favor of relative ones, where ever possible. The reasoning being the theory:
- Absolute is more specific; relative paths don’t have to be checked for all sub- and sub-sub-folders individually
I now learned that[1], at least for relative paths, using multiple .gitignore files in their respective sub-folders leads to a significant speed increase on operations. This only really matters on rather large repositories, (or) with many ignores – or to the enthusiasts.
For me, this raises a question of preference and initial project setup, a re-evaluation is required. Do I want to use one
.gitignore file on smaller projects for better maintainability, and only separate them when the project gets sufficiently large? Do absolute paths even help? – maybe they are an alternative to separating .gitignore files with relative paths?
Anyway, knowing about this fact is interesting and useful. Webkit separated their .gitignore and .gitattribute files to sub-folders.
[1] I learned about it in a pull-request discussion on the mumble project