След три месеца разработка, е публикувана версия 2.32 на разпределената система за управление на изходния код Git. Git е една от най-популярните, надеждни и високопроизводителни системи за управление на версии, предлагаща гъвкави средства за нелинейна разработка, базирани на клоняване и сливане на клонове. За да се осигури целостта на историята и да се предотвратят „обратни“ промени, се използва неявно хеширане на цялата предишна история при всяко комитиране, а също така има опция за удостоверяване с цифрови подписи на разработчиците на отделни тагове и комити.
В сравнение с предишната версия, новата версия е приела 617 изменения, подготвени с участието на 100 разработчици, от които 35 участват за първи път. Основните нововъведения са:
- В командата „git commit“ е добавена опцията „—trailer [=]“, която улеснява прикрепянето на собствена структурирана информация (trailer) в формат ключ/стойност, която след това може да бъде обработена с командата „interpret-trailers“.
- Вместо механизма GIT_CONFIG_NOSYSTEM, който се използва за предотвратяване на четене от общия системен файл за конфигурация, е предложено да се използва механизма GIT_CONFIG_SYSTEM, който позволява явно да се посочи от кой файл да се зареждат общосистемните настройки, а също и параметър GIT_CONFIG_GLOBAL за презапис на индивидуалните настройки на потребителите в $HOME/.gitconfig. Присвояването на перемената GIT_CONFIG_SYSTEM на празна стойност променя поведението на еквивалентно на GIT_CONFIG_NOSYSTEM.
- При използване на втората версия на комуникационния протокол Git, при изпълнение на „git push“ е реализирано определяне на общия предшественик на получаващата страна, което е позволило да се увеличи ефективността на работата на „git push“ до нивото на „git fetch“ и да се изключи изтеглянето на обекти, които не са необходими.
- Добавен е прост IPC интерфейс, позволяващ създаването на услуги, като fsmonitor.
- Спиран е анализа на файловете „.gitattributes“, „.gitignore“ и „.mailmap“, ако те са символични линкове.
- За протокол HTTP е добавена поддръжка на кеширане на паролата, успешно използвана за отключване на сертификата.
- В командата „git stash show“ е реализирана възможността да се показва незабелязаната част от хранилището на временно премахнати файлове.
- Предложена по-напреднала стратегия за повторно опаковане на репозитория от екипа «git repack», което позволява да се намали консумацията на ресурси при повторно опаковане.
- В екипа «git commit» е реализирана разширена версия на опцията «—fixup» (създаване на комит за «rebase —autosquash») — «—fixup=(reword|amend):», осигуряваща избор: да се променя само съобщението в лога или съобщението и съдържанието.
- В командата «git send-email» е отчетена настройката core.hooksPath.
- В «git format-patch -v» е разрешено използването на броячи, които не са задължително числа.
- В «git clone» е добавена опцията «—reject-shallow», която забранява клонирането от репозитории в режим shallow (без пълна история на промените).
- В програмата «gitweb» е добавен режим за скриване на имейли, заменяйки подобни на имейл низове при извеждане.
- Променена е логиката на обработка на командата «git apply —3way», която сега първо се опитва да приложи алгоритъма за тристранно сливане и само в случай на неуспех или конфликти се връща към обикновеното прилагане на патча (преди беше обратното).
- В командата «git apply» е разрешено едновременното указване на опциите «—3way» и «—cached».
- В Userdiff са добавени шаблони за езика «Scheme».
- В командата «git log» е добавена опцията «—diff-merges=» и настройката log.diffMerges за избор на режим по подразбиране.
- В командите «git add» и «git rm» е добавена допълнителна защита срещу промяна на данни в пътища, намиращи се извън обхвата на операцията за частично клониране (sparse checkout).
- В командата «git rev-list» е добавена опцията «—filter=object:type=» за изключване на определен тип обекти от pack-файла, генериран от командата pack-objects.
- В «git pack-objects» е забранено указването на отрицателни стойности в опциите, които приемат числови стойности, като «—window» и «—depth».
Източник: opennet.ru
