Дата публикации:Tue, 30 Jul 2024 10:11:39 +0300
После трёх месяцев разработки опубликован выпуск распределенной системы управления исходными текстами 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".
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61627