След три месеца разработка, бе публикувана версия 2.46 на разпределената система за управление на изходния код Git. Git е една от най-популярните, надеждни и високопроизводителни системи за управление на версии, предлагаща гъвкави средства за нелинейно развитие, основани на клониране и слJoining. За да се осигури целостта на историята и устойчивостта на изменения „с ретроактивен ефект“, се използва неявно хеширане на цялата предходна история във всяко комит, също така е възможно удостоверяване с цифрови подписи на разработчиците за отделни тагове и комити. Кодът на 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», използван за предаване на данни за достъп при обращение към репозитории с ограничен достъп, е добавена поддръжка на нови полета «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
