Издание на разпределена система за управление на изходния код 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 репозиторий без предаване на блобове, с ограничение на проверката само до коренната директория на работната копия и отделно маркиране за извличане на директориите «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 в репозитория.
  • Добавени са оптимизации за ускоряване на операциите за частично клониране, свързани с използването на битови карти
    (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