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

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

В сравнение с предходната версия, новата версия включва 504 промени, разработени от 64 разработчика, от които 12 за първи път участват в разработката. Основни нововъведения:

  • Извършен е преход по подразбиране на втората версия на комуникационния протокол Git, който се използва при отдалечено свързване на клиента с Git-сървъра. Втората версия на протокола е забележителна с предоставянето на възможност за филтриране на клонове и тагове от страната на сървъра, за да се предостави на клиента съкратен списък с линкове. По-рано при изпълнението на команда за извличане на клиента винаги се изпращаше пълен списък с линкове в целия репозиторий, дори когато клиентът актуализираше само един клон или проверяваше актуалността на своята копия на репозитория. Друго значително нововъведение е възможността за добавяне на нови функции в протокола в процес на добавяне на нова функционалност в инструмента. Кодът на клиента остава съвместим със стария протокол и може да продължи да работи както с новите, така и със старите сървъри, автоматично връщайки се към първата версия, ако сървърът не поддържа втората.
  • В команда „git config“ е добавена опцията „—show-scope“, която улеснява идентифицирането на мястото, където са определени определени настройки. Git позволява определяне на настройки на различни места: в репозитория (.git/info/config), в директорията на потребителя (~/.gitconfig), в общата системна конфигурация (/etc/gitconfig), а също и чрез опции на командния ред и променливи на средата. При изпълнението на „git config“ е трудно да се разбере къде точно е определена търсената настройка. За решаването на тази задача беше налична опция „—show-origin“, но тя само показва пътя към файла, в който е определена настройката, което е полезно при намерение да бъде редактиран файла, но не помага, ако е необходимо да се промени стойността чрез „git config“ с опции „—system“, „—global“ или „—local“. Новата опция „—show-scope“ показва контекста на определянето на променливите и може да се прилага заедно с „—show-origin“:

    $ git —list —show-scope —show-origin
    global file:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=current
    […]
    local file:.git/config branch.master.remote=origin
    local file:.git/config branch.master.merge=refs/heads/master

    $ git config —show-scope —get-regexp ‘diff.*’
    global diff.statgraphwidth 35
    local diff.colormoved plain

    $ git config —global —unset diff.statgraphwidth

  • В настройките на свързването учетни данни разрешено използването на маски в URL. Всички настройки на HTTP и данни за удостоверяване в Git могат да бъдат зададени както за всички връзки (http.extraHeader, credential.helper), така и за връзките, свързани с URL (credential.https://example.com.helper, credential.https://example.com.helper). Досега използването на маски, като *.example.com, беше позволено само за настройки на HTTP, но не се поддържаше за връзките на данни за удостоверяване. В Git 2.26 тези разлики са отстранени и, например, за свързване на потребителско име с всички поддомейни сега може да се зададе:

    [credential «https://*.example.com»]

    username = ttaylorr

  • Продължено разширение на експерименталната поддръжка на частично клониране (partial clones), позволяващо прехвърлянето само на част от данните и работа с непълна версия на хранилището. В новата версия е добавена нова команда „git sparse-checkout add“, която позволява добавянето на отделни директории за приложение на операцията „checkout“ само към част от работното дърво, вместо да се изброяват всички подобни директории веднага чрез командата „git sparse-checkout set“ (може да се добавят по една директория, без повторно задаване на целия списък всеки път).
    Например, за клониране на хранилище git/git без предаване на блобове, ограничаване на проверката само до кореновата директория на работната версия и отделно маркиране за извличане на директориите „t“ и „Documentation“, може да се зададе:

    $ git clone —filter=blob:none —sparse git@github.com:git/git.git

    $ cd git
    $ git sparse-checkout init —cone

    $ git sparse-checkout add t
    ….
    $ git sparse-checkout add Documentation
    ….
    $ git sparse-checkout list
    Documentation
    t

  • Забележимо увеличена производителността на командата „git grep“, прилагана за търсене както в актуалното съдържание на хранилището, така и в историческите ревизии. За ускоряване на търсенето беше позволено сканирането на съдържанието на работното дърво с използването на няколко потока („git grep —threads“), но търсенето в историческите ревизии беше еднопоточно. Сега това ограничение е премахнато чрез внедряване на възможността за паралелизация на операциите за четене от хранилището на обекти. По подразбиране броят на потоките е зададен равен на броя на ядрата на CPU, което в повечето случаи вече не изисква явното задаване на опцията „—threads“.
  • Добавена е поддръжка на автоматично допълване на въвеждане на субкоманди, пътища, връзки и други аргументи на командата „git worktree“, позволяваща работа с няколко работни копия на хранилището.
  • Добавена поддръжка на ярки цветове, за които съществуват ANSI escape последователности. Например, в настройките за оцветяване на синтаксиса „git config —color“ или „git diff —color-moved“ чрез опцията „—format“ за ярко синьо може да се указва „%C(brightblue)“.
  • Добавена нова версия на скрипта fsmonitor-watchman, осигуряваща интеграция с механизма Facebook Watchman за ускоряване на проследяването на промените в файловете и появата на нови файлове. След обновяването, git изисква да се замени hook в репозитория.
  • Добавени оптимизации за ускоряване на операциите за частично клониране (partial clones), свързани с прилагането на битови карти
    (bitmap machinery) за избягване на пълно перебиране на всички обекти по време на филтриране на отдаването. Проверката за блобове (—filter=blob:none и —filter=blob:limit=n) при частично клониране сега се извършва
    значително по-бързо. GitHub обяви прилагането на патчове с тези оптимизации и експерименталната поддръжка на частично клониране.
  • Командата „git rebase“ е преместена на друг бекенд, използващ по подразбиране механизма ‘merge’ (преди е бил използван за „rebase -i“) вместо ‘patch+apply’. В някои детайли бекендите се различават, например, след продължаване на операцията след разрешаване на конфликт (git rebase —continue) новият бекенд предлага да редактирате съобщението на комита, а старият просто е използвал старото съобщение. За възстановяване на старото поведение може да се използва опцията „—apply“ или да се зададе конфигурационната променлива ‘rebase.backend’ на стойност ‘apply’.
  • Примерът за обработчик на параметри за удостоверяване, зададени чрез .netrc, е приведен в форма, подходяща за употреба от кутията.
  • Добавена е настройка gpg.minTrustLevel за задаване на минимално ниво на доверие за различни елементи, извършващи проверка на цифровата подписка.
  • В „git rm“ и „git stash“ е добавена опция „—pathspec-from-file“.
  • Продължено усъвършенстване на тестовите набори в подготовката за преминаване на алгоритъм за хеширане SHA-2 вместо SHA-1.

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

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