Efter tvÄ mÄnaders utveckling har version 2.39 av det distribuerade systemet för hantering av kÀllkod Git publicerats. Git Àr ett av de mest populÀra, pÄlitliga och högpresterande versionshanteringssystemen, vilket erbjuder flexibla verktyg för icke-linjÀr utveckling som baseras pÄ förgrening och sammanslagning av grenar. För att sÀkerstÀlla integriteten hos historiken och motstÄndskraft mot retroaktiva Àndringar anvÀnds implicit hashning av hela föregÄende historia i varje commit, och det Àr ocksÄ möjligt att verifiera med digitala underskrifter av utvecklare av individuella taggar och commits.
JÀmfört med föregÄende version har den nya versionen tagit emot 483 Àndringar, som har förberetts med deltagande av 86 utvecklare, varav 31 deltog i utvecklingen för första gÄngen. De viktigaste nyheterna Àr:
- Till kommandot âgit shortlogâ, som syftar till att visa sammanfattningar med statistik frĂ„n Ă€ndringshistoriken, har en option ââgroupâ lagts till för godtycklig gruppering av commits efter fĂ€lt, som inte begrĂ€nsas till författaren eller committaren. Till exempel, för att visa en lista över utvecklare med information om antalet förĂ€ndringar, som tar hĂ€nsyn till medförfattare nĂ€mnda i fĂ€ltet âCo-authored-byâ, kan du anvĂ€nda kommandot: git shortlog -ns âgroup=author âgroup=trailer:co-authored-by
Utdata frĂ„n shortlog kan aggregeras med hjĂ€lp av formateringsspecifikationer, och optionen ââgroupâ gör det möjligt att vĂ€sentligt förenkla skapandet av komplexa rapporter och undvika att utföra ytterligare sorteringskommandon. Till exempel, för att skapa en rapport med information om hur mĂ„nga commits för ett givet slĂ€pp som mottagits varje mĂ„nad kan du ange: git shortlog v2.38.0.. âdate=âformat:%Y-%mâ âgroup=ââ -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Tidigare skulle en liknande operation ha krĂ€vt anvĂ€ndning av verktygen sort och uniq: git log v2.38.0.. âdate=âformat:%Y-%mâ âformat=ââ | sort | uniq -c
- Möjligheterna för mekanismen "cruft packs" har utvidgats, avsedd för att paketera otillgÀngliga objekt som inte har nÄgra referenser i ditt repository (varken genom grenar eller taggar). OtillgÀngliga objekt tas bort av skrÀpsamlaren, men för att undvika race conditions finns de kvar i repositoryt under en viss tid innan de tas bort. Mekanismen "cruft packs" möjliggör lagring av alla otillgÀngliga objekt i en pack-fil, medan information om tidpunkten för varje objekts modifiering lagras i en separat tabell i en fil med tillÀgget ".mtimes", sÄ att de inte krockar med den allmÀnna modifieringstiden.
Tiden som otillgĂ€ngliga objekt kan finnas kvar i repositoryt innan de faktiskt tas bort bestĂ€ms av alternativen "âprune=". Ăven om fördröjningen innan borttagning Ă€r en effektiv och praktisk metod för att förhindra skador pĂ„ repositoryt orsakade av race conditions, Ă€r den inte 100 % tillförlitlig. För att underlĂ€tta Ă„terstĂ€llningen av ett skadat repository har en funktion för att spara saknade objekt lagts till i den nya utgĂ„van, dĂ€r kommandot "git repack" har fĂ„tt alternativet "âexpire-to", vilket möjliggör specifikationen av en fil för att skapa en extern kopia av alla borttagna objekt. Till exempel, för att spara otillgĂ€ngliga 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
- Hastigheten för operationen "git grep âcached" har ökat avsevĂ€rt (med upp till 70 %) vid sökning i omrĂ„den dĂ€r partiell kloning (sparse-checkout) anvĂ€nds och för vilka det finns partiella index (sparse index). Tidigare, nĂ€r alternativet "âcached" angavs, utfördes först sökningen i det vanliga indexet och sedan i de partiella, vilket ledde till mĂ€rkbara fördröjningar vid sökning i stora repositories.
- Genomförande av servern kontroller av nya objekts konsistens innan de placeras i repositoryt under operationen "git push" har pÄskyndats. Genom att övergÄ till att endast beakta annonserade referenser vid kontrollen, har de optimeringar som gjorts i ett testrepository med 7 miljoner referenser, dÀr endast 3 % omfattas av push-operationen, möjliggjort en reduktion av kontrolltiden med 4,5 gÄnger.
- För att skydda mot potentiella överflöden av heltal i koden har kommandot "git apply" begrÀnsat den maximala storleken pÄ bearbetade patchar. Om storleken pÄ patchen överstiger 1 GB kommer nu ett felmeddelande att visas.
- För att skydda mot potentiella sÄrbarheter har det gjorts Àndringar för att rensa bort överflödig information i rubriker som stÀlls in vid anvÀndning av modulen h2h3 med alternativet GIT_TRACE_CURL=1 eller GIT_CURL_VERBOSE=1 tillsammans med HTTP/2.
- Vid utförande av checkout-operation med en gren som Àr en symbolisk lÀnk till en annan gren, kommer kommandot "git symbolic-ref HEAD" nu att visa namnet pÄ mÄlbladet istÀllet för namnet pÄ den symboliska lÀnken.
- Stöd för argumentet @{-1} har lagts till i alternativet "âedit-description" ("git branch âedit-description @{-1}") för att redigera beskrivningen av den tidigare grenen.
- Kommandot "git merge-tree âstdin" har lagts till, vilket gör det möjligt att överföra en lista med parametrar via standardingĂ„ngen.
- PÄ nÀtverksfilsystem Àr fsmonitor-hanteraren, som övervakar förÀndringar i filsystemet, som standard inaktiverad.
KĂ€lla: opennet.ru
