Release av distribuerat källkontrollsystem Git 2.26

Tillgängliga lansering av ett distribuerat källkontrollsystem Git 2.26.0. Git är ett av de mest populära, pålitliga och högpresterande versionskontrollsystemen, som tillhandahåller flexibla icke-linjära utvecklingsverktyg baserade på förgrening och sammanslagning. För att säkerställa historiens integritet och motståndet mot retroaktiva förändringar används implicit hash av hela den tidigare historien i varje commit, och det är också möjligt att certifiera individuella taggar och commits med digitala signaturer från utvecklare.

Jämfört med den tidigare utgåvan inkluderade den nya versionen 504 ändringar, förberedda med deltagande av 64 utvecklare, varav 12 deltog i utvecklingen för första gången. Den huvudsakliga innovationer:

  • Standardinställningen har ändrats till andra versionen Git kommunikationsprotokoll, som används när en klient fjärransluter till en Git-server. Den andra versionen av protokollet är känd för att ge möjligheten att filtrera grenar och taggar på serversidan, vilket returnerar en förkortad lista med länkar till klienten. Tidigare skickade varje pull-kommando alltid klienten hela listan med referenser i hela förvaret, även när klienten bara uppdaterade en gren eller kontrollerade att deras kopia av förvaret var uppdaterad. En annan anmärkningsvärd innovation är möjligheten att lägga till nya funktioner till protokollet när ny funktionalitet blir tillgänglig i verktygslådan. Klientkoden förblir kompatibel med det gamla protokollet och kan fortsätta att fungera med både nya och gamla servrar, och faller automatiskt tillbaka till den första versionen om servern inte stöder den andra.
  • Alternativet "-show-scope" har lagts till i kommandot "git config", vilket gör det lättare att identifiera platsen där vissa inställningar är definierade. Git låter dig definiera inställningar på olika platser: i arkivet (.git/info/config), i användarkatalogen (~/.gitconfig), i den systemomfattande konfigurationsfilen (/etc/gitconfig) och genom kommandot linjealternativ och miljövariabler. När du kör "git config" är det ganska svårt att förstå var exakt den önskade inställningen är definierad. För att lösa detta problem var alternativet "--show-origin" tillgängligt, men det visar bara sökvägen till filen där inställningen är definierad, vilket är användbart om du tänker redigera filen, men det hjälper inte om du måste ändra värdet genom "git config" med alternativen "--system", "--global" eller "-local". Det nya alternativet "--show-scope" visar variabeldefinitionskontexten och kan användas tillsammans med -show-origin:

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

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    lokal diff.colormoved slätt

    $ git config --global --unset diff.statgraphwidth

  • I bindningsinställningarna referenser Det är tillåtet att använda masker i webbadresser. Alla HTTP-inställningar och referenser i Git kan ställas in både för alla anslutningar (http.extraHeader, credential.helper) och för URL-baserade anslutningar (credential.https://example.com.helper, credential.https: //example. com.helper). Fram till nu var jokertecken som *.example.com endast tillåtna för HTTP-inställningar, men stöddes inte för bindning av autentiseringsuppgifter. I Git 2.26 är dessa skillnader eliminerade och för att till exempel binda ett användarnamn till alla underdomäner kan du nu ange:

    [referens "https://*.example.com"]

    användarnamn = ttaylorr

  • Expansionen av experimentellt stöd för partiell kloning (partiella kloner) fortsätter, vilket gör att du bara kan överföra en del av data och arbeta med en ofullständig kopia av förvaret. Den nya utgåvan lägger till ett nytt kommando "git sparse-checkout add", som låter dig lägga till individuella kataloger för att tillämpa "checkout"-operationen på endast en del av arbetsträdet, istället för att lista alla sådana kataloger på en gång genom kommandot "git sparse-checkout set" (du kan lägga till en och en en katalog, utan att specificera om hela listan varje gång).
    Till exempel, för att klona ett git/git-förråd utan att begå blobbar, begränsa utcheckningen till endast rotkatalogen för arbetskopian och separat markera utcheckning för "t"- och "Documentation"-katalogerna, kan du ange:

    $ git clone --filter=blob:ingen --sparse [e-postskyddad]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout lägg till Dokumentation
    ....
    $ git sparse-checkout lista
    Dokumentation
    t

  • Prestandan för kommandot "git grep", som används för att söka i både det aktuella innehållet i förvaret och historiska revisioner, har förbättrats avsevärt. För att påskynda sökningen var det möjligt att skanna innehållet i arbetsträdet med hjälp av flera trådar ("git grep -threads"), men sökningen i historiska versioner var enkeltrådad. Nu har denna begränsning tagits bort genom att implementera möjligheten att parallellisera läsoperationer från objektminnet. Som standard är antalet trådar satt lika med antalet CPU-kärnor, vilket i de flesta fall nu inte kräver att du uttryckligen ställer in alternativet "-trådar".
  • Lade till stöd för autokomplettering av inmatning av underkommandon, sökvägar, länkar och andra argument för kommandot "git worktree", vilket låter dig arbeta med flera arbetskopior av förvaret.
  • Tillagt stöd för ljusa färger som har ANSI escape-sekvenser. Till exempel, i inställningarna för högdagrande färger "git config -color" eller "git diff -color-moved" kan du ange "%C(brightblue)" via alternativet "--format" för ljusblått.
  • Lade till ny version av skriptet fsmonitor-väktare, vilket ger integration med mekanismen Facebook Watchman för att påskynda spårning av filändringar och uppkomsten av nya filer. Efter uppdatering krävs git ersätta den kroka i förvaret.
  • Lade till optimeringar för att snabba upp partiella kloner när du använder bitmappar
    (bitmappsmaskineri) för att undvika en fullständig sökning av alla objekt vid filtrering av utdata. Sökning efter blobbar (—filter=blob:none och —filter=blob:limit=n) under partiell kloning utförs nu
    betydligt snabbare. GitHub tillkännagav patchar med dessa optimeringar och experimentellt stöd för partiell kloning.

  • Kommandot "git rebase" har flyttats till en annan backend, med standardmekanismen "merge" (tidigare använd för "rebase -i") istället för "patch+apply". Backends skiljer sig åt på vissa små sätt, till exempel efter att ha fortsatt en operation efter att ha löst en konflikt (git rebase --continue), erbjuder den nya backend att redigera commit-meddelandet, medan den gamla helt enkelt använde det gamla meddelandet. För att återgå till det gamla beteendet kan du använda alternativet "--apply" eller ställa in konfigurationsvariabeln 'rebase.backend' till 'apply'.
  • Ett exempel på en hanterare för autentiseringsparametrar specificerade via .netrc har reducerats till en form som lämpar sig för användning direkt.
  • Lade till inställningen gpg.minTrustLevel för att ställa in den lägsta förtroendenivån för olika element som utför digital signaturverifiering.
  • Lade till alternativet "--pathspec-from-file" till "git rm" och "git stash".
  • Förbättringen av testsviterna fortsatte som förberedelse för övergången till SHA-2-hashalgoritmen istället för SHA-1.

Källa: opennet.ru

Lägg en kommentar