# ============================================================================
# Line-ending and whitespace attributes
#
# Goal: keep source/text files normalized so that replacing a file with a
# copy that only differs in CRLF/LF does NOT show up as a whole-file diff.
# This defines behaviour going forward only; no mass renormalization is done.
# ============================================================================

# Let Git handle text detection and normalize text to LF in the repository.
* text=auto

# ----------------------------------------------------------------------------
# C/C++ source -> stored and checked out as LF
# ----------------------------------------------------------------------------
*.c          text eol=lf
*.cc         text eol=lf
*.cpp        text eol=lf
*.cxx        text eol=lf
*.h          text eol=lf
*.hpp        text eol=lf
*.hxx        text eol=lf
*.inl        text eol=lf

# Generated revision headers must stay LF
src/shared/revision_nr.h  text eol=lf
src/shared/revision_sql.h text eol=lf

# ----------------------------------------------------------------------------
# CMake, config and other text files -> LF
# ----------------------------------------------------------------------------
CMakeLists.txt text eol=lf
*.cmake      text eol=lf
*.sql        text eol=lf
*.txt        text eol=lf
*.md         text eol=lf
*.xml        text eol=lf
*.conf       text eol=lf
*.dist       text eol=lf
*.json       text eol=lf
*.yml        text eol=lf
*.yaml       text eol=lf

# ----------------------------------------------------------------------------
# Unix shell scripts -> LF
# ----------------------------------------------------------------------------
*.sh         text eol=lf

# ----------------------------------------------------------------------------
# Windows scripts and Visual Studio project files -> CRLF
# ----------------------------------------------------------------------------
*.sln        text eol=crlf
*.vcproj     text eol=crlf
*.vcxproj*   text eol=crlf
*.bat        text eol=crlf
*.cmd        text eol=crlf
*.ps1        text eol=crlf

# ----------------------------------------------------------------------------
# Binary / runtime artifacts -> never normalize
# ----------------------------------------------------------------------------
*.png        binary
*.jpg        binary
*.jpeg       binary
*.gif        binary
*.ico        binary
*.bmp        binary
*.mpq        binary
*.dbc        binary
*.db2        binary
*.map        binary
*.vmap       binary
*.mmap       binary
*.lib        binary
*.dll        binary
*.exe        binary
*.pdb        binary
*.zip        binary
*.7z         binary
*.gz         binary
*.tar        binary

# ============================================================================
# Whitespace rules (preserved from the original .gitattributes)
# ============================================================================

# strict (no trailing, no tabs)
*.cpp        whitespace=trailing-space,space-before-tab,tab-in-indent,cr-at-eol
*.h          whitespace=trailing-space,space-before-tab,tab-in-indent,cr-at-eol

# normal (no trailing)
*.sql        whitespace=trailing-space,space-before-tab,cr-at-eol
*.txt        whitespace=trailing-space,space-before-tab,cr-at-eol

# special files which must ignore whitespace
*.patch      whitespace=-trailing-space
