След три месеца разработка, бе публикувана версия 2.44 на разпределената система за управление на изходен код Git. Git е една от най-популярните, надеждни и високопроизводителни системи за управление на версии, предлагаща гъвкави средства за нелинейна разработка, базираща се на клонове и сливане. За осигуряване на целостта на историята и устойчивостта към изменения "задължително" се използва неявно хеширане на цялата предишна история при всяко комитиране, също така е възможно удостоверяване с цифрови подписи на разработчиците на отделни тагове и комити. Кодът на Git се разпространява под лиценз GPLv2+.
В новата версия са приети 503 промени, подготвени с участието на 85 разработчици, от които 34 за първи път участват в разработката. Основните новшества са:
- Добавена е нова команда "git replay", която може да се използва като алтернатива на "git rebase" и да се прилага за възстановяване на история на сървър без работно дърво (bare репозиторий, който не съдържа работно дърво), обработка на множество клонове едновременно, изпълнение на операция rebase за клонове, различни от текущо извлечените, или просто за ускоряване на операциите по сливане.
- Добавена е поддръжка за системата за непрекъсната интеграция GitLab CI.
- В командите "git add" и "git stash" е добавена поддръжка за атрибути на пътища ":(attr:…)", задавани по аналогия с командата "git show". Например "git add ':(attr:~binary)'" може да се използва за добавяне на всички текстови (не бинарни) файлове в индекса. Допълнително, в новата версия е предложен атрибут "builtin_objectmode" за филтриране на файлови пътища по права на достъп. Например, "git add ':(attr:builtin_objectmode=100755)'" може да се използва за добавяне на всички изпълними файлове.
- Добавена е поддръжка за повторна употреба на обекти, разпределени в няколко pack-файла, за които съществува обобщен индекс (multi-pack-index) с данни за наличността на обектите (оптимизация, позволяваща вместо фактическа предаване на данни, да се позовем на използването на данни, вече налични в pack-файлове). От версия 2.44 git вече може да обработва повторната употреба на обекти върху няколко pack-файла, без необходимост от повторно опаковане на репозитория в един pack-файл. За да активирате новата функция, трябва да изпълните командите: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap
след което броят на pack-файловете, от които се повторно използват обектите, може да бъде проследен в стойността „pack-reused … (от N)“, показвана при изпълнение на „git push“.
- Командата „git rebase —autosquash“ вече може да се използва за операции rebase в неинтерактивен режим, което позволява да се извърши rebase и бързо да се приложат fixup-корекции без инспектиране на списъка с промени и без да се променя променливата на средата GIT_SEQUENCE_EDITOR.
- В командата „git merge-file“ е добавена опция „—diff-algorithm“ за избор на алтернативен алгоритъм за оценка на разликите между файловете.
- В командата „git checkout -B []“ е забранено обновяването и извличането на клонове, използващи друго работно дърво. За връщане на старото поведение е добавена опция „—ignore-other-worktrees“.
- Добавена е възможност за задаване на настройката „git config advice.pushAlreadyExists“ със стойност „true“, която премахва инструкциите за деактивиране на съветите (hint), заемащи място на екрана.
- Оптимизирано е изпълнението на командата „git for-each-ref“ с опция „—no-sort“, която сега дава изход в неопределен ред (по-рано при задаване на „—no-sort“ все пак се прилагаше сортиране по азбучен ред). След оптимизациите, приложението на „—no-sort“ сега ускорява „git for-each-ref“ с около 20% в репозитории с много референции.
- В бекенда за управление на удостоверения wincred е добавена поддръжка за обновяване на OAuth токени, подобно на начина, по който е реализирано в бекендите credential-cache и credential-libsecret.
- В „git fetch“ е добавена поддръжка за параметър на конфигурацията „fetch.all“, който ще бъде обработен по аналогия с добавянето на опция „—all“ в командния ред.
Източник: opennet.ru
