# The default behavior, which overrides 'core.autocrlf', is to use Git's
# built-in heuristics to determine whether a particular file is text or binary.
# Text files are automatically normalized to the user's platforms.
* text=auto

# Explicitly declare text files that should always be normalized and converted
# to native line endings.
.asf.yaml text
.gitattributes text
.gitignore text
git.properties text
.travis.yml text
LICENSE text
NOTICE text
*.html text
*.java text
*.md text
*.properties text
*.sh text
*.xml text
*.yml text
*.yaml text

# Declare files that will always have CRLF line endings on checkout.

# Explicitly denote all files that are truly binary and should not be modified.
*.jpg binary
*.png binary
*.svg binary

# Declare files that should be ignored when creating an archive of the git repository
.asf.yaml export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.travis.yml export-ignore
.github/ export-ignore
