.gitattributes override behavior (possible bug, or documentation bug)
- From
- Dakota Hawkins <dakota@dakotahawkins.com>
- Date
- Mar 20, 2018, 01:49 UTC
- Message-ID
- <CAHnyXxRX4+sMJCNG6f9xtsDO6bdqRS-U6TAYO47OKQjH8bGzbg@mail.gmail.com>
According to the gitattributes docs:
"When more than one pattern matches the path, a later line overrides an earlier line. This overriding is done per attribute."
I had a need to do this recently, and while the attributes are git-lfs specific, I think the issue may be generic.
Summary: Trying to apply attributes to file extensions everywhere except in one directory.
.gitattributes:
*.[Pp][Nn][Gg] filter=lfs diff=lfs merge=lfs -text
/.readme-docs/ -filter=lfs -diff=lfs -merge=lfsMake some data:
echo "asldkjfa;sldkjf;alsdjf" > ./.readme-docs/test.png
git add -AResult:
"git check-attr -a --cached -- ./readme-docs/test.png" still shows "filter=lfs diff=lfs merge=lfs" attributes.
Full details: https://github.com/git-lfs/git-lfs/issues/2120#issuecomment-374432354
Is this me misunderstanding something in the documentation? I would expect "./.readme-docs/" to match "./.readme-docs/test.png" and override the earlier "*.[Pp][Nn][Gg]" attributes.
I have found the following overrides to work in lieu of the directory match:
/.readme-docs/* -filter=lfs -diff=lfs -merge=lfs
/.readme-docs/**/* -filter=lfs -diff=lfs -merge=lfs...but I don't see a justification in the documentation for this working and the original directory filter not working.
Thanks for any clarification or help you can provide,
- Dakota