Выпуск системы управления исходными текстами Git 2.50

Опубликован выпуск распределенной системы управления исходными текстами Git 2.50. Git отличается высокой производительностью и предоставляет средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям «задним числом» используются неявное хеширование всей предыдущей истории в каждом коммите, а также удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Код Git распространяется под лицензией GPLv2+.

По сравнению с прошлым выпуском в новую версию принято 621 изменение, подготовленное при участии 98 разработчиков, из которых 35 впервые участвуют в разработке. Основные новшества:

  • Расширена возможность разделения на несколько 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 cat-file --batch-check='%(objectname)' --filter='object:type=tree' 
    
  • В команде «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 или переписаны на языке Си.

  • Добавлен userdiff-обработчик для формата файлов конфигурации ».ini».

  • В команде send-email улучшена поддержка SMTP-сервера Outlook.



Источник: http://www.opennet.ru/opennews/art.shtml? num=63413

© OpenNet