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

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

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

  • Добавлена экспериментальная поддержка нового вида битовых карт - «pseudo-merge reachability bitmap», в которых в отличие от структуры «reachability bitmap» данные о наборах объектов, имеющих отношение к коммитам, хранятся не в привязке к каждому отдельному коммиту, а в привязке сразу к нескольким коммитам. Подобная организация позволяет использовать одну битовую карту при определении объектов для коммитов в разных ветках, что в больших репозиториях даёт возможность обойтись без создания большого числа отдельных битовых карт и заметно ускорить обход объектов для определения того, какие объекты необходимо отправить клиенту при выполнении таких операций, как «git fetch», «git rev-list» и «git clone». Для включения нового вида битовых карт и определения логики их выбора и использования в больших репозиториях предложена серия настроек «bitmapPseudoMerge»:
       git config bitmapPseudoMerge.all.pattern 'refs/(heads|tags)/'
       git config bitmapPseudoMerge.all.threshold now
       git config bitmapPseudoMerge.all.stableThreshold never
       git repack -adb
    
  • Предложен новый интерфейс командной строки для команды «git config», в котором вместо разрозненных опций для просмотра, переименования и удаления настроек и секций, таких как »--get»,»--get-all»,»--unset» и »--remove-section», предложен набор субкоманд. Например, для вывода все настроек для репозитория теперь можно использовать команду «git config list», а для просмотра содержимого определённого параметра — команду «git config get ‹имя›». Для дополнительной фильтрации результатов при помощи опции »--regexp» можно задать фильтр на основе регулярного выражения.

  • В протокол «credential helper», применяемый для передачи учётных данных при обращения к репозиторям c ограниченным доступом, добавлена поддержка новых полей «authtype» и «credential», позволяющих создавать обработчики для систем HTTP-аутентификации, не ограничивающихся проверкой логина и пароля, например, при применении Bearer Token в OAuth 2.0. До этого для работы с подобными системами аутентификации приходилось указывать конфиденциальные данные в открытом виде в параметре http.extraHeader. Кроме того, в протокол добавлена возможность сохранения состояния каждого обработчика учётных данных для поддержки многоэтапных методов аутентификации, используемых в таких протоколах, как NTLM и Kerberos.

  • Продолжено развитие экспериментального бэкенда «reftable» для эффективного хранения в репозитории ссылок на ветки и теги. Данный бэкенд использует блочное хранилище, применяемое проектом JGit и оптимизированное для хранения очень большого числа ссылок (традиционные форматы хранения ссылок приводят в репозиториях с большим числом ссылок к ощутимым накладным расходам из-за размещения очень большого числа файлов в одном каталоге в случае хранения ссылок в каталоге $GIT_DIR/refs или необходимости перезаписи одного большого файла при каждом обновлении в случае хранения ссылок в файле $GIT_DIR/packed_refs). В новой версии добавлена команда «git refs migrate --ref-format=reftable» для перевода существующих репозиториев на бэкенд «reftable» (ранее бэкенд включался только при инициализации репозитория).

  • В команду git добавлена опция »--no-advice», отключающая все сообщения с рекомендациями и подсказками, что может оказаться полезным для предотвращения забивания лога лишней информацией при автоматизированном вызове git.

  • Начался процесс перевода некоторых проверок из тестового набора на использование unit-тестов, что упростит тестирование низкоуровневых компонентов и повысит эффективность процесса тестирования на платформе Windows, на которой возникают большие накладные расходы при запуске большого числа процессов во время выполнения тестов на shell.

  • В код для разбора настроек цветов добавлена возможность использования представления »#RGB» в дополнение к »#RRGGBB».



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

© OpenNet