Release av distribuerat källkontrollsystem Git 2.25

Tillgängliga lansering av ett distribuerat källkontrollsystem Git 2.25.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 583 ändringar, förberedda med deltagande av 84 utvecklare, varav 32 deltog i utvecklingen för första gången. Den huvudsakliga innovationer:

  • Möjligheten till partiell kloning närmar sig stabilisering och full beredskap, vilket gör att du bara kan överföra en del av data och arbeta med en ofullständig kopia av förvaret. En typisk klon kopierar all data från förvaret, inklusive varje version av varje fil i ändringshistoriken. För mycket stora arkiv resulterar kopiering av data i en betydande ökning av trafik och diskutrymme, även om utvecklaren bara är intresserad av en delmängd av filerna. För att göra det enklare att bara hämta en del av det fungerande källträdet introducerar den nya versionen ett experimentellt "sparse-checkout"-kommando och ett nytt "--sparse"-alternativ för kommandot "clone".

    Tidigare utfördes den selektiva kloningsprocessen genom uppgiften filter för att filtrera bort onödigt innehåll och alternativet "—no-checkout" för att inaktivera fyllning av saknade filer. Efter det, innan du utförde utcheckningsoperationen, var det nödvändigt att aktivera inställningen core.sparseCheckout och definiera en lista över uteslutna sökvägsmönster i filen .git/info/sparse-checkout. Till exempel, för att klona utan blobbar och förhindra att filer extraheras från underkataloger med djup 2 eller mer, kan du köra:

    git clone --filter=blob:none --no-checkout /ditt/lager/här repo
    $cd repo
    $ cat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git utcheckning .

    Det nya kommandot "git sparse-checkout" förenklar arbetet avsevärt och reducerar processen att organisera arbetet med ett ofullständigt arkiv till följande kommandon:

    git clone --filter=blob:none --sparse /ditt/lager/här repo
    git sparse-checkout set /path/to/check/out

    Kommandot sparse-checkout låter dig ställa in en lista med sökvägar för utcheckning (set) utan att manuellt konfigurera .git/info/sparse-checkout, samt visa den aktuella listan med sökvägar (lista) och aktivera eller inaktivera partiella utcheckningar (aktivera /inaktivera).

    För att optimera arbetet med mycket stora arkiv och listor med mallar, "git config core.sparseCheckoutCone", som begränsar tillåtna mönster (istället för godtyckliga .gitignore-mönster kan du ange om alla sökvägar och alla filer i en given underkatalog ska checkas ut). Till exempel, om ett stort förråd har en katalog "A/B/C" och allt arbete är koncentrerat i underkatalogen "C", när du aktiverar sparseCheckoutCone-läget, kommer kommandot "git sparse-checkout set A/B/ C" extraherar hela innehållet i "C", men från "A" och "B" extraherar det bara de delar som behövs för att arbeta med "C".

  • Från dokumentationen ("git rebase -h") har alla referenser till alternativet "--preserve-merges" tagits bort, som har föråldrats och bör användas istället för att migrera en uppsättning commits.git rebase --rebase-merges".
  • För att förbättra läsbarheten för meddelanden med patchar som skickats till e-postlistor, har alternativet "git format-patch —cover-from-description subject" lagts till, när det anges används första stycket från grenbeskrivningstexten som ämne för följebrev för en uppsättning lappar.
  • Implementerat stöd för den kombinerade användningen av kommandot "git apply -3way" och inställningen "merge.conflictStyle" ("git application" tar nu hänsyn till konfliktbeskrivningsstilen från merge.conflictStyle när det är nödvändigt att lösa konflikten efter att ha försökt för att applicera en korrigeringsfil på förvaret).
  • Funktionsdefinitionskoden som används i operationer som "git diff/grep --show-function/-function-context" har utökats för att stödja definition av funktionsgränser i språkprogram Elixir.
  • Ett nytt alternativ har lagts till för "git add", "git commit", "git reset" och andra kommandon - "-pathspec-from-file", vilket gör det möjligt att ladda en lista med sökvägar från en fil eller indataström istället för att lista dem på kommandoraden.
  • Problemet med att upptäcka omnamn på katalognivå när du skriver commits har lösts. Definitionen fungerade inte om innehållet i en underkatalog flyttades till roten av förvaret.
  • En första implementering av det omgjorda kommandot "git add -i" har föreslagits, vilket gör att du kan lägga till ändrat innehåll interaktivt, omskrivet från Perl till C. En liknande omarbetning av kommandot "git add -p" pågår.
  • Kommandot “git log –graph” har omfaktorerats, vilket genererar en ASCII-bild av en graf med historik över förändringar i förvaret. Omarbetningen gjorde det möjligt att avsevärt förbättra och förenkla produktionen utan att förvränga berättelsens struktur, vilket till exempel löste problemet med att bilden sträckte sig utanför terminallinjens bredd.
  • Alternativet "git log --format=.." låter dig ändra utdataformatet,
    utökas med stöd för "l/L"-flaggor för att endast visa den del av e-postadressen som anges före "@"-symbolen (till exempel användbart när alla utvecklare har alla e-postmeddelanden i samma domän).

  • Lade till ett "set-url" underkommando till kommandot "git submodule".
  • Testkit har uppdaterats inför övergången till
    hashalgoritm SHA-2 istället för SHA-1.

Källa: opennet.ru

Lägg en kommentar