Домой Софт macOS и Linux Вышел Git 2.55: поддержка Rust, параллельные хуки и новые инструменты

Вышел Git 2.55: поддержка Rust, параллельные хуки и новые инструменты

Крупное обновление Git 2.55 приносит поддержку Rust, ускоренные операции с индексами, фоновый мониторинг файлов и новые возможности для автоматизации разработки.

Вышел Git 2.55: поддержка Rust, параллельные хуки и новые инструменты
Вышел Git 2.55: поддержка Rust, параллельные хуки и новые инструменты — иллюстрация к материалу. Источник: linux.org.ru

Состоялся релиз распределенной системы контроля версий Git 2.55. Обновление включает множество улучшений: от интеграции Rust в процесс сборки до внедрения фонового мониторинга файловой системы в Linux и оптимизации работы с индексами.

В текущую версию вошло 505 правок, подготовленных при участии 100 разработчиков, причем 33 из них внесли свой вклад в проект впервые. Код распространяется под лицензией GPLv2+.

Ключевые нововведения

  • Интеграция Rust: Поддержка компонентов на языке Rust теперь включена по умолчанию, а компилятор rustc стал обязательной сборочной зависимостью. Для тех, кому необходимо собрать Git без Rust, предусмотрены флаги NO_RUST=1 (для make) или -Drust=disabled (для meson). Использование Rust пока опционально до выхода версии 3.0, где он станет обязательным. На новом языке уже реализованы прослойка для переносимости между хэшами SHA-1 и SHA-256, а также функции обработки целочисленных значений переменной длины.
  • Команда git history fixup: В экспериментальный инструментарий git history добавлена операция fixup. Она позволяет автоматически переносить изменения из текущего индекса в нужный коммит и переписывать историю, заменяя ручной запуск git commit --fixup и последующий git rebase --autosquash.
  • Fsmonitor для Linux: Появился фоновый процесс fsmonitor, который использует механизм inotify для отслеживания изменений в файловой системе. Это избавляет от необходимости полного сканирования рабочего каталога при выполнении команд вроде git status. Активируется настройкой core.fsmonitor.
  • Инкрементальные MIDX-индексы: Команда git repack получила режим --write-midx=incremental. Он позволяет обновлять метаданные без перестроения всего индекса целиком, работая со слоями (bitmap-файлами). Это предотвращает разрастание индексов и ускоряет упаковку репозитория.
  • Оптимизация битовых карт: Значительно ускорена генерация битовых карт доступности объектов благодаря переработке алгоритмов обхода дерева и сортировки данных. В тестовых сценариях это сократило время генерации с 612 до 294 секунд.
  • Параллельные хуки: Теперь можно настроить одновременное выполнение независимых хуков (например, линтеров или юнит-тестов) через параметры hook.имя_хука.parallel = true и hook.jobs.
  • Фильтры в git pack-objects: Добавлена поддержка фильтров (blob:none, tree:0 и др.) при использовании --path-walk, что позволяет существенно уменьшить размер итогового pack-файла.
  • Команда git format-rev: Новый инструмент для форматирования ревизий и имен объектов, удобный для использования в скриптах и хуках.

Дополнительные улучшения

  • Безопасность: По умолчанию включено экранирование управляющих последовательностей терминала, передаваемых сервером. Это защищает пользователей от вредоносных действий, таких как манипуляция выводом или перемещение курсора при обращении к скомпрометированным репозиториям.
  • Работа с ветками: Команда git checkout -m научилась автоматически сохранять конфликтующие изменения в stash, а git push теперь поддерживает отправку веток на несколько серверов одновременно.
  • Визуализация логов: В git log --graph добавлена опция --graph-lane-limit для управления количеством вертикальных полос, а git rev-list получила параметр --max-count-oldest для выбора N самых старых коммитов.
Источник: https://www.linux.org.ru