fix(git): shell-скрипты уезжали в индекс с CRLF и ломались на Linux

core.autocrlf=true и отсутствие .gitattributes приводили к тому, что
install-linux.sh хранился с CRLF. На Linux это даёт "$'\r': command not
found", а самораспаковывающийся установщик, собранный после checkout на
Windows, ломался бы целиком: пролог обрезает себя по строке-маркеру, а
маркер с \r не совпадает.

Добавлен .gitattributes: *.sh/*.py/*.yaml только LF, *.ps1/*.bat только
CRLF, *.exe/*.ico/*.png помечены binary, чтобы нормализация их не трогала.
Индекс перенормализован.

Проверено: в индексе все четыре shell-скрипта с LF, заголовок MZ у
launcher/*.exe цел, пересобранный dist/hermes-hub-setup.sh не содержит CR
ни в прологе, ни в распакованном install-linux.sh.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hermes Team 2026-08-25 09:12:01 +07:00
parent 290e23070e
commit 1d5e44ab3c

23
.gitattributes vendored Normal file
View file

@ -0,0 +1,23 @@
# Переводы строк фиксируются намеренно.
#
# core.autocrlf=true на машинах разработки записывал shell-скрипты в индекс с
# CRLF. На Linux такой файл даёт "$'\r': command not found", а собранный из
# него самораспаковывающийся установщик ломается целиком. Поэтому всё, что
# исполняется на Linux, хранится и выдаётся только с LF.
* text=auto
*.sh text eol=lf
*.bash text eol=lf
*.py text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
# Виндовые скрипты остаются с CRLF.
*.ps1 text eol=crlf
*.bat text eol=crlf
*.cmd text eol=crlf
# Бинарники не трогать.
*.exe binary
*.ico binary
*.png binary