# Handle line endings automatically for files detected as text
# and leave all files detected as binary untouched.
*               text=auto

#
# The above will handle all files NOT found below
#
# These files are text and should be normalized (Convert crlf => lf)
.gitignore      text
.gitattributes  text
*.md            text

#
# Exclude files from exporting
#

.gitattributes  export-ignore
.gitignore      export-ignore
.github         export-ignore
.travis.yml     export-ignore
Jenkinsfile     export-ignore

# Java sources
*.java          text diff=java

# These files are text and should be normalized (Convert crlf => lf)
*.css           text diff=css
*.scss          text diff=css
*.df            text
*.htm           text diff=html
*.html          text diff=html
*.js            text
*.jsp           text
*.jspf          text
*.jspx          text
*.properties    text
*.tld           text
*.tag           text
*.tagx          text
*.ts            text
*.sh            text eol=lf
*.xml           text
*.dtd           text
*.xsd           text
*.xsl           text

# These files are binary and should be left untouched
# (binary is a macro for -text -diff)
*.jks           binary