# If file is text, use lf line-endings and let forges show it in repo # languages. For more information: `man gitattributes` * text=auto eol=lf linguist-detectable # Suggestions for inevitably encountering .gitattributeless repositories when # .gitattributes cannot be added: # git config --global core.autocrlf input # - `* text=auto` when there is no `.gitattributes`. In other words, # commit eol=lf, check-out as it is. # git config --global core.safecrlf warn # - Warn if EOL change is irreversible. # git config --global merge.renormalize true # - Avoid merge-conflict when merging from .gitattributeless branch to # .gitattributed branch # This is the default "binary" macro attribute, but with diffing allowed. # Use when file contains diffable text, but isn't actually plaintext and thus # shouldn't have EOL conversion done. [attr]binaryd diff -merge -text # Example: #*.db binaryd # Built-in diff patterns (disabled by default). The attribute `diff` implies # `text` and the above attributes are inherited. # https://www.git-scm.com/docs/gitattributes#_defining_a_custom_hunk_header # TODO # diff=matlab # diff=pascal *.{adb,ads} diff=ada *.bibtex diff=bibtex *.cs diff=csharp *.{c,cpp} diff=cpp *.css diff=css *.dts diff=dts *.{ex,exs} diff=elixir *.{f90,f,for} diff=fortran *.fountain diff=fountain *.go diff=golang *.html diff=html *.java diff=java *.{kt,kts} diff=kotlin *.{h,m,mm,M} diff=objc *.pl diff=perl *.php diff=php *.py diff=python *.rb diff=ruby *.{rs,rlib} diff=rust *.{scm,ss} diff=scheme *.tex diff=tex # bash & co aren't often Windows, so alway have lf line-endings regarldess # of the above. Markdown is also included as I utilise doctoc, which # requires lf line-endings. *.{sh,bash,zsh} diff=bash eol=lf *.{md,markdown,[mM][dD],[mM][aA][rR][kK][dD][oO][wW][nN]} diff=markdown eol=lf # While this file is like .gitignore, negative patterns are forbidden and # directory/ wouldn't recurse, thus directory/**. Also !attribute would set # it back to unset. # In this case Windows/** may also contain binary files, thus auto-detection # is repeated and eol=crlf as it's unlikely to be of use outside of Windows. Windows/** text=auto eol=crlf # Similarly these files are unlikely to be encountered outside of Windows. # The "text" attribute is used as otherwise they rely on auto-detection of # textness since there is no diff attribute set. # Ref: https://rehansaeed.com/gitattributes-best-practices/#line-endings *.{reg,[rR][eE][gG]} text eol=crlf *.{bat,[bB][aA][tT]} text eol=crlf *.{ahk,[aA][hH][kK]} text eol=crlf # These files are scary, let's not touch them. The attribute "lockable" is # provided by git-lfs. https://github.com/git-lfs/git-lfs/wiki/File-Locking LICENSE text lockable CITATION.cff text lockable # NOTE! .gitattributes doesn't support the case-insensitive style above!