Вышел Git 2.56: безопасное разрешение конфликтов и новые команды
Junio C. Hamano объявил о выпуске очередной функциональной версии распределённой системы контроля версий Git — 2.56.0. С момента появления 2.55 в июне в дерево влились 748 коммитов (без учёта слияний) от 104 человек, причём 39 из них внесли свой вклад впервые. По традиции разработчики учитывают не только авторство патчей, но и сообщения об ошибках, наставничество и рецензирование.
Работа с конфликтами
Одно из главных направлений релиза — сделать разрешение конфликтов слияния более безопасным. Теперь git commit отказывается изменять коммит (amend) или создавать частичный коммит, пока конфликт не разрешён. В помощь пришла новая опция git add --resolved: она индексирует только те пути, где конфликт устранён, оставляя остальные локальные правки нетронутыми, а перед этим сканирует файлы на предмет забытых маркеров конфликта и прерывается, если находит их.
Новые команды и подкоманды
Набор git refs пополнился подкомандами create, delete, update и rename для прямого управления ссылками. Экспериментальная команда git history научилась подкоманде drop, которая удаляет коммит, перенося его потомков на родителя. Команда git replay получила флаг --linearize, отбрасывающий коммиты слияния и распрямляющий историю. Появилась и опция git branch --delete-merged для удаления веток, уже влитых в отслеживаемые удалённые ветки.
Производительность и мелочи
Сборка пакетов через --path-walk теперь работает совместно с битовыми картами достижимости и delta-islands, что ускоряет упаковку. Оптимизированы обход коммитов, перечисление неотслеживаемых файлов в git status и операции с бэкендом reftable.
Есть и приятные удобства. Git теперь распознаёт распространённые опечатки: команды вроде git push origin/main сопровождаются подсказкой с исправлением. Разбор опций приведён в соответствие с юниксовой традицией — запрос справки через -h или --help теперь завершается кодом 0, а не 129. Добавлены userdiff-шаблоны для языка Swift с поддержкой его специфических конструкций.
Отдельно отмечается, что поддержка Rust включена по умолчанию, оставаясь при этом опциональной; обязательной она станет в Git 3.0. Появилась и возможность собирать универсальные бинарники для macOS. Полный список изменений, как обычно, включает множество исправлений утечек памяти, устранение падений и укрепление кода против повреждённых данных.
Источник: LWN.net
Комментарии
Войдите, чтобы комментировать.