Release av Git 2.39 källkontrollsystem

Efter två månaders utveckling har det distribuerade källkontrollsystemet Git 2.39 släppts. 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; det är också möjligt att certifiera individuella taggar och commits med digitala signaturer från utvecklarna.

Jämfört med den tidigare utgåvan inkluderade den nya versionen 483 ändringar, förberedda med deltagande av 86 utvecklare, varav 31 deltog i utvecklingen för första gången. Huvudsakliga innovationer:

  • Kommandot "git shortlog", utformat för att visa sammanfattningar med statistik från ändringshistoriken, har lagt till ett "-group"-alternativ för godtycklig gruppering av commits efter fält som inte är begränsade till författare eller committer. Till exempel, för att visa en lista över utvecklare med information om antalet ändringar, med hänsyn till hjälparna som nämns i "Co-authored-by"-fältet, kan du använda kommandot: git shortlog -ns --group=author - -group=trailer:co-authored-by

    Shortlog-utdata kan aggregeras med hjälp av formateringsspecifikationer, och alternativet "--group" kan avsevärt förenkla skapandet av komplexa rapporter och eliminera behovet av ytterligare sorteringskommandon. Till exempel, för att skapa en rapport med information om hur många commits för en given release som accepterades under varje månad, kan du specificera: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Tidigare, för att utföra en liknande operation skulle det ha varit nödvändigt att använda sorterings- och unika verktyg: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | sortera | unik -c

  • Möjligheterna för "cruft packs"-mekanismen, designad för att packa oåtkomliga objekt som inte hänvisas till i förvaret (som inte refereras av grenar eller taggar), har utökats. Oåtkomliga objekt raderas av sopsamlaren, men förblir i förvaret en viss tid innan de raderas för att undvika tävlingsförhållanden. Mekanismen "cruft packs" låter dig lagra alla oåtkomliga objekt i en packfil och visa data om modifieringstiden för varje objekt i en separat tabell, lagrad i en separat fil med tillägget ".mtimes", så att de gör det inte överlappa den totala modifieringstiden.

    Hur lång tid som oåtkomliga objekt finns kvar i arkivet innan de faktiskt raderas bestäms av alternativet "—prune=" " Men även om fördröjning innan radering är ett ganska effektivt och praktiskt sätt att förhindra förvarskorruption på grund av rasförhållanden, är det inte 100 % tillförlitligt. För att göra det enklare att återställa ett skadat arkiv ger den nya utgåvan möjligheten att spara saknade objekt genom att lägga till alternativet "--expire-to" till kommandot "git repack", som låter dig ange en fil för att skapa en extern kopia av alla raderade objekt. Till exempel, för att spara oåtkomliga objekt som inte har ändrats under de senaste 5 minuterna i filen backup.git, kan du använda kommandot: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Avsevärt ökade (upp till 70%) hastigheten på "git grep -cachad" operationen vid sökning i områden som använder partiell kloning (sparse-checkout) och för vilka det finns partiella index (glesa index). Tidigare, när man angav alternativet "-cachad", utfördes sökningen först i det vanliga indexet och sedan i de partiella, vilket ledde till märkbara förseningar vid sökning i stora arkiv.
  • Serverns verifiering av koherensen av nya objekt innan de placeras i förvaret under "git push"-operationen har accelererats. Genom att byta till att endast redovisa deklarerade länkar vid kontroll, i ett testlager med 7 miljoner länkar, varav endast 3 % täcks av push-operationen, möjliggjorde de gjorda optimeringarna att minska kontrolltiden med 4.5 gånger.
  • För att skydda mot potentiella heltalsspill i koden, begränsar kommandot "git application" den maximala storleken på patchar som kan bearbetas. Om patchstorleken överstiger 1 GB kommer nu ett felmeddelande att visas.
  • För att skydda mot potentiella sårbarheter har ändringar gjorts för att rensa bort onödig information från rubrikerna som ställs in när h2h3-modulen används med alternativet GIT_TRACE_CURL=1 eller GIT_CURL_VERBOSE=1 tillsammans med HTTP/2.
  • När du utför en utcheckning på en gren som är en symbolisk länk till en annan gren, visar kommandot "git symbolic-ref HEAD" nu namnet på målgrenen snarare än namnet på symbollänken.
  • Lade till stöd för @{-1}-argumentet till alternativet "--edit-description" ("git branch —edit-description @{-1}") för att redigera beskrivningen av en tidigare gren.
  • Lade till kommandot "git merge-tree --stdin" för att skicka en lista med alternativ via standardinmatning.
  • På nätverksfilsystem är fsmonitor-hanteraren, som övervakar ändringar i filsystemet, inaktiverad som standard.

Källa: opennet.ru

Lägg en kommentar