16 июня 2025 года состоялся релиз распределённой системы управления версиями Git 2.50. В обновление вошли 621 изменение кода и фиксы с патчами от 98 разработчиков, 24 из них — новые участники проекта. Релиз Git 2.47 состоялся в октябре 2024 года. Версия Git 2.48 опубликована в январе 2025 года. В середине марта 2025 года вышла версия Git 2.49.
По информации OpenNET, в Git 2.50 исправлены ранее найденные ошибки и баги, а также внесено множество добавлений и доработок в код проекта, включая:
расширена возможность разделения на несколько pack‑файлов базы недостижимых объектов («cruft packs»), на которые в репозитории отсутствуют ссылки (не ссылаются ветки или теги). Использование нескольких мелких pack‑файлов вместо одного крупного позволяет значительно сократить операции ввода/вывода при переупаковке репозиториев с большим числом недостижимых объектов, так как для каждой операции переупаковки не нужно перезаписывать все данные;
предложена опция «‑combine‑cruft‑below‑size», при помощи которой можно организовать объединение существующих pack‑файлов, размер которых не превышает заданное значение. В отличие от ранее доступной опции «‑max‑cruft‑size» новая опция «‑combine‑cruft‑below‑size» не ограничивает максимальный размер результирующего pack‑файла, что позволяет более эффективно объединять pack‑файлы в репозиториях с большим числом недостижимых объектов, разнесённых по нескольким pack‑файлам;
добавлена экспериментальная поддержка инкрементального обновления многопакетных индексов MIDX (multi‑pack index), при котором каждый слой MIDX‑индекса c информацией о доступности объектов размещается в отдельном bitmap‑файле. В очень крупных репозиториях реализованный вид индексов даёт возможность по мере поступления коммитов быстро и эффективно добавлять новые битовые карты доступности объектов;
из кодовой базы удалён старый движок выполнения операций слияния «recursive», на смену которому пришёл полностью переработанный движок «ORT» (Ostensibly Recursive»s Twin), более производительный, функциональный и удобный для сопровождения. ORT позволяет определить возможность объединения двух объектов, не создавая новых объектов в репозитории (при старом движке требовалось выполнение команды «git merge‑tree ‑write‑tree», записывающей новые объекты в репозиторий). В Git 2.50 в команде merge‑tree реализована опция «‑quiet», при которой возможность объединения можно проверить на основе кода возврата без записи данных в репозиторий;
в «git cat‑file ‑batch» и подобные команды добавлена опция «‑filter», позволяющая пропустить некоторые объекты при выполнении операции;
в команде «git maintenance» реализованы три новых действия: worktree‑prune, rerere‑gc и reflog‑expire. Действие worktree‑prune предназначено для удаления устаревших или повреждённых рабочих деревьев (worktrees) в репозитории. Действие rerere‑gc удаляет старых записи, оставшиеся после устранения конфликтов слияния. Действие reflog‑expire удаляет устаревшие недоступные объекты из reflog;
добавлена команда «git reflog drop», удаляющая все данные reflog для указанной ветки.
проведена оптимизация обработки и использования ссылок, например, реализовано кэширование префиксов ссылок, убраны лишние проверки при выполнении команды «git update‑ref», повышена эффективность поиска существующих итераторов ссылок;
для библиотеки cURL добавлены настройки KeepAlive: http.keepAliveIdle, http.keepAliveInterval и http.keepAliveCount;
в команде «git rev‑list» реализована возможность вывода в формате, удобном для машинного разбора, при котором каждое поле разделено символом NUL;
язык Perl исключён из зависимостей, необходимых для утилит работы с документацией и выполнения тестового набора («make test»). Многие Perl‑однострочники в тестах заменены на функции shell или переписаны на языке C;
добавлен userdiff‑обработчик для формата файлов конфигурации «.ini»;
в команде send‑email улучшена поддержка SMTP‑сервера Outlook.
7 апреля 2005 года состоялся первый выпуск распределённой системы управления версиями под названием Git, созданной Линусом Торвальдсом за несколько недель для управления разработкой ядра Linux вместо BitKeeper, так как никакая другая система контроля исходного кода не удовлетворяла требованиям в плане распределённости ресурсов. Теперь этот проект значительно вырос и в апреле 2025 года ему исполнилось 20 лет.
Источник: habr.com