Пускане на разпределената система за управление на изходен код Git 2.25

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

В сравнение с предишното издание, новата версия включва 583 изменения, подготвени с участието на 84 разработчици, от които 32 участват за първи път. Основни нововъведения:

  • Приближава се до стабилизация и пълна готовност възможността за частично клониране (partial clones), позволяваща прехвърляне само на част от данните и работа с незавършена копия на репозиторий. При стандартното клониране от репозиторий се копират всички данни, включително всяка версия на всеки файл от историята на промените. За много големи репозитории копирането на данните води до значително увеличаване на трафика и дисковото пространство, дори когато разработчика се интересува само от подмножество от файловете. За улесняване на получаването на само част от работното дърво на изходните текстове, в новото издание е предложена експериментална команда "sparse-checkout" и нова опция "—sparse" за командата "clone".

    По-рано процесът на селективно клониране се извършваше чрез задаване филтри за отсяване на излишното съдържание и опция "—no-checkout" за деактивиране на попълването на липсващите файлове. След това, преди изпълнението на операцията checkout, беше необходимо да се включи настройката core.sparseCheckout и да се определи в файла .git/info/sparse-checkout списъкът с шаблони на изключените пътища. Например, за клониране без блоби и забрана за извличане на файлове от вложени директории с дълбочина 2 и повече, можеше да се изпълни:

    git clone —filter=blob:none —no-checkout /your/repository/here repo
    $ cd repo
    $ cat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Новата команда "git sparse-checkout" значително улеснява работата и свежда процеса на организиране на работа с непълния репозиторий до командите:

    git clone —filter=blob:none —sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    Командата sparse-checkout позволява задаването на списък с пътища за checkout (set) без ръчно конфигуриране на .git/info/sparse-checkout, както и извеждане на текущия списък с пътища (list) и включване или изключване на частично checkout (enable/disable).

    За оптимизиране на работата с много големи репозитории и списъци с шаблони, е предложена настройката "git config core.sparseCheckoutCone«, ограничаваща допустимите шаблони (вместо произволни шаблони .gitignore може да зададете всички пътища и всички файлове в зададената поддиректория, които трябва да бъдат извлечени). Например, ако в голямо хранилище има каталог «A/B/C» и всяката работа е съсредоточена в подкатегория «C», то при активиране на режима sparseCheckoutCone командата «git sparse-checkout set A/B/C» ще извлече съдържанието на «C» напълно, но от «A» и «B» ще извлече само необходимите части за работа с «C».

  • От документацията («git rebase -h») са премахнати всички споменавания на опцията «—preserve-merges», която е обявена за остаряла и вместо нея за преместване на набор от комити трябва да се използва «git rebase —rebase-merges«.
  • За подобряване на четимостта на съобщенията с патчи, изпращани в списъци с разпределение, е добавена опция «git format-patch —cover-from-description subject», при посочване на която темата на съпроводителното писмо за набор от патчи се използва първият абзац от текста на описанието на клон.
  • Реализирана е поддръжка за съвместно използване на командата «git apply —3way» и настройката «merge.conflictStyle» («git apply» сега взема предвид стила на описание на конфликта от merge.conflictStyle, когато е необходимо разрешаване на конфликта след опит за прилагане на файл с патч към хранилището).
  • Кодът за определяне на функции, използван в такива операции като «git diff/grep —show-function/—function-context», е разширен с поддръжка за определяне на граници на функциите в програми на езика Elixir.
  • В «git add», «git commit», «git reset» и други команди е добавена нова опция «—pathspec-from-file», която позволява зареждане на списък с пътища от файл или входен поток, вместо изброяване в командния ред.
  • Решен е проблемът с определяне на преименования на ниво каталози при запис на комити. Определянето не е работило в случай на преместване на съдържанието на подкаталога в корена на хранилището.
  • Предложена е начална реализация на преработената команда «git add -i», позволяваща добавяне на променено съдържание в интерактивен режим, пренаписана от Perl на C. Водят се аналогични преработки на командата «git add -p».
  • Извършен е рефакторинг на командата «git log —graph», генерираща ASCII изображение на графа с историята на промените в хранилището. Преработката доведе до значително подобрение и опростяване на извода без изкривяване на структурата на историята, което, например, реши проблема с излизането на изображението извън ширината на реда на терминала.
  • Опцията «git log —format=..», която позволява да промените формата на извеждането,
    е разширена с поддръжка на флаговете «l/L» за извеждане само на част от имейл адреса, посочена преди символа «@» (например, полезно е, когато всички разработчици имат имейли в един и същ домейн).
  • Към командата «git submodule» е добавена подкоманда «set-url».
  • Тестовите набори са обновени в рамките на подготовката за преминаване към
    алгоритъм за хеширане SHA-2 вместо SHA-1.

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

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