FreeBSD временно остановил изменения в репозитории Ports после того, как 20 июля в историю попал бинарный файл размером 150 МБ. Для разработчиков это не курьез из мира BSD, а знакомый сценарий: один неверный коммит ломает зеркала, тянет за собой лицензионные вопросы и заставляет переписывать историю Git.
Что именно произошло
По данным FreeBSD, 20 июля в дерево Ports попал бинарный файл размером 150 МБ. Уже 21 июля команда заметила, что зеркалирование на GitHub перестало работать: платформа жестко блокирует файлы крупнее 100 МБ. После этого проект приостановил push в репозиторий, а 22 июля публично объявил о заморозке.
Проблема была не только в размере файла. В письме FreeBSD сказано, что коммит добавил в историю объект с questionable licensing, то есть с неясным статусом для публичного распространения. Речь шла о бинарнике GitHub Copilot CLI, который не должен был оказаться в открытой истории репозитория.
Почему история оказалась неприятнее обычной ошибки
Удалить такой файл из рабочей копии недостаточно: Git хранит объект в истории, и именно из-за этого ломается зеркалирование. 24 июля FreeBSD сообщил, что переписал историю репозитория, чтобы убрать проблемный файл, и предупредил сопровождающих и разработчиков о смене хешей коммитов.
Отдельно проект подчеркнул, что компрометации репозитория не было. Заморозка нужна была для того, чтобы сократить число коммитов, которые пришлось бы переписывать, и дать сообществу воспроизводимый способ синхронизироваться с новым состоянием дерева.
Контекст вокруг порта Copilot
История выглядит особенно показательно, потому что у FreeBSD действительно есть порт github-copilot-cli. Но это не означает, что проект должен хранить внутри дерева сам крупный проприетарный бинарник. В экосистеме FreeBSD такие инструменты нередко запускают через слой совместимости с Linux, а вопрос лицензии и способа распространения приходится разбирать отдельно.
На этом фоне The Register напомнил и о другой линии дискуссии: многие разработчики устали от того, насколько хрупкими оказываются привычные сценарии работы с Git. Почти одновременно с этой историей участники OpenBSD выпустили новую версию Game of Trees, системы контроля версий с упором на более простой рабочий процесс. Это не замена Git завтра утром, но сигнал понятный.
Значение для рынка
Для российских команд вывод приземленный: публичные репозитории стоит защищать не только ревью, но и серверными ограничениями на размер и тип файлов. Если в сборке участвуют чужие CLI, SDK или бинарные артефакты, надо заранее понимать, можно ли хранить их в открытой истории и что случится с зеркалами, если кто-то ошибется. FreeBSD уже внедряет серверные хуки, чтобы отсекать такие коммиты на входе. Обычно это дешевле, чем потом объяснять, почему один файл на 150 МБ остановил половину инфраструктуры.
Следующий практический шаг очевиден: после этого инцидента проекты с публичными зеркалами будут жестче проверять бинарные вложения еще до push.