# Normalize line endings in the repository to LF
# Prevents "This diff contains a change in line endings from LF to CRLF" in GitHub Desktop

* text=auto eol=lf

# Explicitly LF for all text source files
*.py    text eol=lf
*.md    text eol=lf
*.txt   text eol=lf
*.json  text eol=lf
*.cfg   text eol=lf
*.ini   text eol=lf
*.toml  text eol=lf
*.yml   text eol=lf
*.yaml  text eol=lf
*.sh    text eol=lf

# CHANGELOG: сливать обе стороны вместо конфликта.
#
# Правило проекта требует запись в КАЖДОМ PR, и все записи копятся в одном
# разделе [Unreleased]. При нескольких PR в работе git видит правку одних и тех
# же строк и выдаёт конфликт — хотя содержательного конфликта нет ни разу:
# каждая сторона просто дописала свою строку. Разрешение вручную сводилось к
# «оставить обе», то есть ровно к тому, что делает merge=union.
#
# Безопасно это потому, что новые записи идут в БУФЕР в начале [Unreleased]
# (см. комментарий в самом CHANGELOG.md): там нет секций, принадлежность
# написана в самой строке, поэтому порядок строк не значим и union не может
# положить запись «не туда». Разбор буфера по секциям — при релизе, вместе с
# ротацией [Unreleased] → [X.Y.0]; там строки не добавляются, а двигаются,
# поэтому результат мержа стоит один раз просмотреть глазами.
CHANGELOG.md text eol=lf merge=union

# Документы аудита: тот же случай, что и CHANGELOG.
#
# Реестр закрытых находок (§ «Закрытые находки: реестр PR») пополняется в
# КАЖДОМ PR, который что-то закрыл, и все строки дописываются в конец одной
# таблицы. Параллельные PR → конфликт на каждый мерж, хотя обе стороны просто
# добавили свои строки: за одну сессию так пришлось разрешить вручную четыре
# подряд, и каждый раз разрешение было «оставить обе».
#
# Порядок строк в реестре не значим (ключ — ID находки в первой колонке), новые
# строки только дописываются, поэтому union не может положить запись «не туда».
# Единственный случай, требующий взгляда, — обе стороны закрыли одну находку
# разными PR: тогда в реестре окажутся две строки с одним ID, и это видно.
docs/audit/*.md text eol=lf merge=union

# Binary files — no line-ending conversion
*.png   binary
*.jpg   binary
*.jpeg  binary
*.gif   binary
*.ico   binary
*.zip   binary
*.gz    binary
*.tar   binary
