Git has a file `.gitattributes`, that can be used to store attributes for files in this
folder.
[Offical Documentation](https://git-scm.com/docs/gitattributes).
* text=auto
*.txt text
*.vcproj text eol=crlf
*.sh text eol=lf
*.jpg -text
When more than one attributes match, the ones that come later overrider the earlier ones.
Setting and Unsetting an Atribute
In `*.txt` we only have `text`, which can be thought of as `text=true`. To unset a value,
you can either use `-text` or `text=false`.
Location Of the File
This file can put in `.gitattributes` in the repo root, if you want to share with the team,
or in any folder in git. It can also be placed in `$GIT_DIR/info/attributes` if you want it
for current repo, but do not want to share with your team. It can also be stored in
`$HOME/.config/git/attributes` and `$(prefix)/etc/gitattributes`.
The attributes defined closer to an actual file has higher precendence than further down.
`$GIT_DIR/info/attributes` has the highest precedence.
Checking Attributes: use [`check-attr`](https://git-scm.com/docs/git-check-attr)
You can use `git check-attr <name-of-attribute> <name-of-file>`, eg `git check-attr diff
org/example/MyClass.java`. To check multiple attribuets, or deal with multiple files separate
attributes and files list by `--` eg `git check-attr foo bar -- file1.txt file2.html`.
Custom Attributes
You can use these for file level custom attributes. Ideally pick an attribute name unique
to your program. For example [Github Linguist](https://github.com/github/linguist/blob/master/docs/overrides.md)
uses git attributes, and their attributes are named `linguist-*`.