Right now, we are unconditionally applying all macros found in a gitatttributes file. But quoting gitattributes(5): Custom macro attributes can be defined only in top-level gitattributes files ($GIT_DIR/info/attributes, the .gitattributes file at the top level of the working tree, or the global or system-wide gitattributes files), not in .gitattributes files in working tree subdirectories. The built-in macro attribute "binary" is equivalent to: So gitattribute files in subdirectories of the working tree may explicitly _not_ contain macro definitions, but we do not currently enforce this limitation. This patch introduces a new parameter to the gitattributes parser that tells whether macros are allowed in the current file or not. If set to `false`, we will still parse macros, but silently ignore them instead of adding them to the list of defined macros. Update all callers to correctly determine whether the to-be-parsed file may contain macros or not. Most importantly, when walking up the directory hierarchy, we will only set it to `true` once it reaches the root directory of the repo itself. Add a test that verifies that we are indeed not applying macros from subdirectories. Previous to these changes, the test would've failed.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
apply | Loading commit data... | |
attr | Loading commit data... | |
blame | Loading commit data... | |
buf | Loading commit data... | |
checkout | Loading commit data... | |
cherrypick | Loading commit data... | |
clar | Loading commit data... | |
clone | Loading commit data... | |
commit | Loading commit data... | |
config | Loading commit data... | |
core | Loading commit data... | |
date | Loading commit data... | |
delta | Loading commit data... | |
describe | Loading commit data... | |
diff | Loading commit data... | |
fetchhead | Loading commit data... | |
filter | Loading commit data... | |
graph | Loading commit data... | |
ignore | Loading commit data... | |
index | Loading commit data... | |
iterator | Loading commit data... | |
mailmap | Loading commit data... | |
merge | Loading commit data... | |
message | Loading commit data... | |
network | Loading commit data... | |
notes | Loading commit data... | |
object | Loading commit data... | |
odb | Loading commit data... | |
online | Loading commit data... | |
pack | Loading commit data... | |
patch | Loading commit data... | |
path | Loading commit data... | |
perf | Loading commit data... | |
rebase | Loading commit data... | |
refs | Loading commit data... | |
remote | Loading commit data... | |
repo | Loading commit data... | |
reset | Loading commit data... | |
resources | Loading commit data... | |
revert | Loading commit data... | |
revwalk | Loading commit data... | |
stash | Loading commit data... | |
status | Loading commit data... | |
stream | Loading commit data... | |
stress | Loading commit data... | |
submodule | Loading commit data... | |
threads | Loading commit data... | |
trace | Loading commit data... | |
transport | Loading commit data... | |
transports/smart | Loading commit data... | |
win32 | Loading commit data... | |
worktree | Loading commit data... | |
CMakeLists.txt | Loading commit data... | |
README.md | Loading commit data... | |
clar.c | Loading commit data... | |
clar.h | Loading commit data... | |
clar_libgit2.c | Loading commit data... | |
clar_libgit2.h | Loading commit data... | |
clar_libgit2_timer.c | Loading commit data... | |
clar_libgit2_timer.h | Loading commit data... | |
clar_libgit2_trace.c | Loading commit data... | |
clar_libgit2_trace.h | Loading commit data... | |
generate.py | Loading commit data... | |
main.c | Loading commit data... | |
precompiled.c | Loading commit data... | |
precompiled.h | Loading commit data... | |
valgrind-supp-mac.txt | Loading commit data... |