Издаване на системата за управление на изходния код Git 2.36

След тримесечно разработване, се публикува версията на разпределената система за управление на изходния код Git 2.36. Git е една от най-популярните, надеждни и високопроизводителни системи за управление на версии, предлагаща гъвкави инструменти за нелинейно разработване, базирани на разклонения и обединения на клонове. За осигуряване на целостта на историята и устойчивостта на изменения „задължения“ се използват неявно хеширане на цялата предишна история в всеки комит, също така е възможно удостоверяване с цифрови подписи на разработчиците на индивидуални тагове и комити.

Сравнено с предишната версия, в новото издание са приети 717 изменения, подготвени от 96 разработчици, от които 26 участници за първи път. Основни новини:

  • В командите „git log“ и „git show“ е добавена опция „—remerge-diff“, която позволява да се покажат разликите между общия резултат от обединението и фактическите данни, отразени в комита след обработката на командата „merge“, което позволява визуално да се оценят промените, направени при разрешаването на конфликти при обединение. Стандартната команда „git show“ отделя различните разрешения на конфликтите с отстъпи, което затруднява разбирането на промените. Например, на екранната снимка по-долу, редовете „+/-“ без отстъп показват последното разрешение на конфликта, свързано с преименуването в първия клон sha1 на oid в коментара, а „+/-“ с отстъп — началното разрешение на конфликта, причинено от появата на втория клон с допълнителен аргумент в функцията dwim_ref().
    Издаване на системата за управление на изходния код Git 2.36

    При използването на опцията „—remerge-diff“, разликите между разрешенията на конфликтите не се разделят за всеки родителски клон, а се показват общите разлики между файла с конфликти на обединение и файла, в който конфликти са разрешени.

    Издаване на системата за управление на изходния код Git 2.36
  • Повишена е гъвкавостта на настройване на поведението при сброс на дискови кешове чрез извикване на функцията fsync(). Предишният параметър core.fsyncObjectFiles е разделен на две конфигурационни променливи core.fsync и core.fsyncMethod, предоставящи възможност за прилагане на fsync не само към файловете с обекти (.git/objects), но и към други структури на git, като референции (.git/refs), reflog и pack-файлове.

    С променливата core.fsync можете да зададете списък с вътрешни структури на Git, за които fsync ще бъде допълнително извикан след операция на запис. Променливата core.fsyncMethod позволява избор на метод за изчистване на кеша, например, можете да изберете fsync за прилагане на системния повик с едноименно име или да посочите writeout-only за прилагане на отложен запис (pagecache writeback).

  • За защита от уязвимости, свързани с манипулиране с подмени на каталозите .git от други потребители в споделени дялове, е засилена проверката на собственика на репозитория. Изпълнението на всякакви git команди вече е разрешено само в собствени каталози „.git“. Ако каталогът на репозитория принадлежи на друг потребител, по подразбиране ще бъде изведена грешка. Това поведение може да бъде деактивирано чрез настройката safe.directory.
  • В командата „git cat-file“, предназначена за извеждане на оригиналното съдържание на Git обекти, е добавена опция „—batch-command“, която допълва предходно достъпните команди „—batch“ и „—batch-check“ с възможност за адаптивен избор на типа изход чрез указване на „contents “ за извеждане на съдържание или „info “ за извеждане на информация за обекта. Допълнително се поддържа команда „flush“ за изчистване на изходния буфер.
  • В командата „git ls-tree“, предназначена за формиране на списък с съдържанието на обектите в дървото, е добавена опция „—oid-only“ („—object-only“), по аналогия с „—name-only“, която извежда само идентификаторите на обектите за опростяване на извикването от скриптове. Осъществена е и опция „—format“, която позволява да се определи собствен формат на изхода, комбинирайки информация за режим, тип, име и размер.
  • В командата „git bisect run“ е реализирано определяне на неупълномощаването на скрипта като изпълним файл и в такъв случай извеждане на грешки с кодове 126 или 127 (по-рано, ако скриптът не може да бъде стартиран, всички ревизии бяха белязани като проблемни).
  • В командата „git fetch“ е добавена опция „—refetch“ за извличане на всички обекти без уведомяване на другата страна за съдържанието, което вече присъства на локалната система. Такова поведение може да бъде полезно за възстановяване на състоянието след неуспехи, когато няма сигурност в целостта на локалните данни.
  • В командите «git update-index», «git checkout-index», «git read-tree» и «git clean» е добавена поддръжка на частични индекси (sparse index), което позволява увеличаване на производителността и спестяване на пространство в репозиториите, в които се извършват операции по частично клониране (sparse-checkout).
  • Променено е поведението на командата «git clone —filter=… —recurse-submodules», която сега води до частично клониране на субмодулите (предишно, при изпълнение на подобни команди, филтърът се прилагаше само за основното съдържание, а субмодулите се клонираха напълно без да се вземат предвид филтъра).
  • В командата «git bundle» е добавена поддръжка за задаване на филтри за селективно поставяне на съдържание по аналогия с операциите по частично клониране.
  • В командата «git branch» е добавена опция «—recurse-submodules» за рекурсивно обхождане на субмодулите.
  • В userdiff е предложен нов обработчик за езика Kotlin.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster