издадена разпределена система за управление изходния текст . Git е една от най-популярните, надеждни и високо производителни системи за управление на версии, предоставяща гъвкави инструменти за нелинейна разработка, базирани на разклоняване и сливане на клонове. За осигуряване на целостта на историята и устойчивостта на промените „задним числом“ се използва неявно хеширане на цялата предходна история във всеки комит; също така е възможно удостоверяване с цифрови подписи на разработчиците на отделни тагове и комити.
В сравнение с предишното издание, в новата версия са приети 537 променa, подготвени с участието на 71 разработчик, от които 19 участници за първи път. Основните :
- Отменено е реализираното в предишното издание включване по подразбиране на комуникационния протокол Git, който се използва при отдалечено свързване на клиента с Git-сървър. Протоколът в момента не е признат за готов за употреба по подразбиране поради откритите проблеми, изискващи отделно разглеждане.
- Добавен е набор от опции за конфигуриране на SSL-соединението при свързване през прокси.
- Разширена е информацията, предоставяна при използване на преобразуващи филтри „clean“ и „smudge“. Например, сега се показва обектът , в който се появява преобразуваният блоб.
- За да се избегне объркване, в командата „git describe“ сега винаги се прилага разширен режим на извеждане („—long“), ако е открит свързан с комита заменен таг (по-рано, подписан или анотиран таг, описващ комита, се изваждаше дори ако е бил преименуван или преместен в йерархията „refs/tags/“, и командата „git show таг^0“ не работеше както се очакваше — „refs/tags/таг“ не се намираше или също така се извеждаше друг таг).
- При изпълнение на „git pull“ сега се издава предупреждение, ако явно не е зададена конфигурационната променлива pull.rebase и не са приложени опциите „—[no-]rebase“ или „—ff-only“. За потискане на предупреждението, тези, които не възнамеряват да извършват операция rebase, могат да зададат стойност „false“ на променливата.
- Извършена е ревизия на опциите „git pull“, които са общи с „git fetch“. Документирани са преди това неупоменавани подобни опции и е осигурено предаване в „git fetch“ на пропуснатите опции.
- В командата „git rebase“ е добавена опция „—no-gpg-sign“ за пренастройване на настройката „commit.gpgSign“.
- В «git format-patch» е добавена функция, позволяваща да се показват заглавията «From:» и «Subject:» в неизменен вид, без преобразуване на символите, които липсват в ASCII кодирането.
- В «git log» е добавена опция «—show-pulls», която позволява да се преглеждат не само комитите с направени промени, но и комитите за сливане на тези промени от отделна клон.
- Унифицирана е обработката на интерактивния вход във всички компоненти и е добавен извикването на fflush() след показването на поканата за вход, но преди операцията на четене.
- В «git rebase» е разрешено повторното прилагане на всички локални комити без предварително извършване на операция «checkout», дори ако някои от тях вече са били предадени в upstream.
- Стойността на конфигурационната променлива ‘pack.useSparse’ е променена на ‘true’, за да се включат по подразбиране оптимизациите, преди това представяни като експериментални.
- В «git merge» е добавена опция «—autostash».
- Подобрен е интерфейсът на «sparse-checkout».
- В «git update-ref —stdin» са добавени няколко нови действия,
които позволяват директен контрол върху транзакциите за обновяване на референции, например, за реализиране на двуетапно атомарно обновяване на референции в няколко репозитория. - Добавени са шаблони userdiff за Markdown документи.
- Премахнато е ограничението за изключване на всички пътища в шаблоните за sparse-checkout, които водят до празно работно дърво.
- Операцията «git restore —staged —worktree» вече по подразбиране използва съдържанието от клона «HEAD», вместо да изведе грешка.
- Продължава работата по преминаването към алгоритъм за хеширане SHA-2 вместо SHA-1.
- Преработен е кодът за взаимодействие с GnuPG.
Източник: opennet.ru
