| # Test file from gitattributes(5) example: | |
| If you have these three gitattributes file: | |
| (in $GIT_DIR/info/attributes) | |
| a* foo !bar -baz | |
| (in .gitattributes) | |
| abc foo bar baz | |
| (in t/.gitattributes) | |
| ab* merge=filfre | |
| abc -foo -bar | |
| *.c frotz | |
| the attributes given to path t/abc are computed as follows: | |
| 1. By examining t/.gitattributes (which is in the same directory as the path | |
| in question), git finds that the first line matches. merge attribute is | |
| set. It also finds that the second line matches, and attributes foo and | |
| bar are unset. | |
| 2. Then it examines .gitattributes (which is in the parent directory), and | |
| finds that the first line matches, but t/.gitattributes file already | |
| decided how merge, foo and bar attributes should be given to this path, | |
| so it leaves foo and bar unset. Attribute baz is set. | |
| 3. Finally it examines $GIT_DIR/info/attributes. This file is used to | |
| override the in-tree settings. The first line is a match, and foo is set, | |
| bar is reverted to unspecified state, and baz is unset. | |
| As the result, the attributes assignment to t/abc becomes: | |
| foo set to true | |
| bar unspecified | |
| baz set to false | |
| merge set to string value "filfre" | |
| frotz unspecified |