# 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)
*.css           text
*.df            text
*.htm           text
*.html          text
*.java          text
*.js            text
*.json          text
*.jsp           text
*.jspf          text
*.properties    text
*.sh            text
*.svg           text
*.tld           text
*.txt           text
*.xml           text
*.xsd           text
*.groovy        text

# These files are binary and should be left untouched
# (binary is a macro for -text -diff)
*.class         binary
*.dll           binary
*.ear           binary
*.gif           binary
*.ico           binary
*.jar           binary
*.jpg           binary
*.jpeg          binary
*.png           binary
*.so            binary
*.war           binary
*.zip           binary
*.exe           binary
*.gz            binary

#Windows
*.bat text eol=crlf
*.cmd text eol=crlf

#Unix/Linux
*.sh text eol=lf
ec2jdk8 text eol=lf
ec2jdk6 text eol=lf
ec2jdk7 text eol=lf