Git отмечает 20 лет выпуском версии 2.50 с масштабными доработками
14:57, 17.06.2025
16 июня 2025 года состоялся релиз Git 2.50 — крупного обновления одной из самых популярных в мире систем управления версиями. В юбилейную версию, приуроченную к 20-летию проекта, вошли 621 изменение, внесённые 98 разработчиками, включая 24 новых участника. Git 2.50 стал логичным продолжением версий 2.47 (октябрь 2024), 2.48 (январь 2025) и 2.49 (март 2025), продолжая курс на оптимизацию производительности и модернизацию внутренних компонентов системы.
Работа с недостижимыми объектами стала эффективнее
Одно из ключевых улучшений касается работы с так называемыми «cruft packs» — архивами с объектами, на которые не ссылаются ни ветки, ни теги. Теперь поддерживается разделение таких pack-файлов на несколько меньших по размеру, что сокращает нагрузку на диск при переупаковке. Также появилась новая опция --combine-cruft-below-size, позволяющая объединять мелкие pack-файлы без ограничения на итоговый размер.
Обновление многопакетных индексов и удаление старого движка слияний
В Git 2.50 реализована экспериментальная поддержка инкрементального обновления MIDX (multi-pack index), где каждый уровень индекса хранится отдельно в виде bitmap-файла. Это особенно важно для крупных репозиториев, в которых важна скорость работы при добавлении новых объектов.
Также из кода полностью удалён устаревший движок слияния recursive, уступивший место более современному и эффективному ORT (Ostensibly Recursive's Twin). Новый движок работает быстрее, требует меньше операций записи и сопровождается проще.
Новые команды и опции
Обновление включает немало удобных новшеств:
- В git maintenance появились новые действия: worktree-prune, rerere-gc и reflog-expire, обеспечивающие чистку репозитория от устаревших и конфликтных данных.
- Добавлена команда git reflog drop, позволяющая удалять reflog для указанной ветки.
- Команды, работающие с выводом (git cat-file -batch, git rev-list), получили новые фильтры и машинно-ориентированный формат с разделением NUL-символом.
- Оптимизирована работа со ссылками — кэшируются префиксы, ускорен update-ref.
Улучшения в сетевых возможностях и экосистеме
Для взаимодействия с внешними системами Git 2.50 предлагает новые настройки KeepAlive через cURL: http.keepAliveIdle, http.keepAliveInterval и http.keepAliveCount. А команда send-email теперь лучше взаимодействует с SMTP-сервером Outlook.
Интересным шагом стало исключение Perl из зависимостей при сборке документации и запуске тестов. Скрипты и тесты теперь переписаны на shell и C, что делает сборку легче и универсальнее.
С каждым релизом Git продолжает развиваться, подтверждая свой статус универсального и мощного инструмента для командной работы над кодом.