Release av Git 2.39 källkontrollsystem

Efter två månaders utveckling har det distribuerade källkodskontrollsystemet Git 2.39 släppts. Git är ett av de mest populära, pålitliga och högpresterande versionskontrollsystemen, vilket ger flexibla metoder för icke-linjär utveckling baserad på förgrening och sammanslagning av grenar. För att säkerställa historikens integritet och motståndskraft mot retroaktiva ändringar används implicit hashning av hela den tidigare historiken i varje commit, och det är också möjligt att certifiera enskilda taggar och commits med utvecklarnas digitala signaturer.

Jämfört med den föregående utgåvan innehåller den nya versionen 483 ändringar som utarbetats med deltagande av 86 utvecklare, varav 31 deltog i utvecklingen för första gången. De viktigaste innovationerna är:

  • Kommandot "git shortlog", som visar sammanfattande statistik från ändringshistoriken, har nu ett alternativ "--group" för godtycklig gruppering av commits efter andra fält än författare eller committer. För att till exempel visa en lista över utvecklare med information om antalet ändringar, med hänsyn till bidragsgivare som nämns i fältet "Medförfattad av", kan du använda kommandot: git shortlog -ns --group=author --group=trailer:medförfattad-av

    Utdata från shortlog kan aggregeras med hjälp av formatspecifikationer, och alternativet "--group" kan avsevärt förenkla skapandet av komplexa rapporter utan att köra ytterligare sorteringskommandon. För att till exempel generera en rapport med information om hur många commits för en given utgåva som accepterades varje månad kan du ange: 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 skulle en liknande operation kräva användning av sort- och uniq-verktygen: git log v2.38.0.. --date='format:%Y-%m' --format='%cd' | sort | uniq -c

  • Funktionerna hos mekanismen "cruft packs", utformad för att packa oåtkomliga objekt som inte refereras till i arkivet (inte refereras till av grenar eller taggar), har utökats. Oåtkomliga objekt tas bort av sophämtaren, men finns kvar i arkivet under en viss tid innan de tas bort för att eliminera kapplöpningsförhållanden. Mekanismen "cruft packs" gör det möjligt att lagra alla oåtkomliga objekt i en enda packfil och att reflektera modifieringstidsdata för varje objekt i en separat tabell som lagras i en separat fil med tillägget ".mtimes", så att de inte överlappar den allmänna modifieringstiden.

    Den tid som oåtkomliga objekt finns kvar i arkivet innan de faktiskt tas bort bestäms av alternativet "--prune=". ". Även om en fördröjning före radering är ett ganska effektivt och praktiskt sätt att förhindra korruption i arkivet på grund av kapplöpningsförhållanden, är det inte 100 % tillförlitligt. För att förenkla återställningen av ett korrupt arkiv ger den nya versionen möjligheten att spara saknade objekt genom att lägga till alternativet "--expire-to" i kommandot "git repack", vilket låter dig ange en fil för att skapa en extern kopia av alla raderade objekt. För att till exempel spara oåtkomliga objekt som inte har ändrats under de senaste 5 minuterna i backup.git-filen kan du använda kommandot: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire-to=../backup.git

  • Prestandan för "git grep --cached" vid sökning i områden som använder sparse checkout och har sparse index har ökats avsevärt (upp till 70%). Tidigare, när alternativet "--cached" angavs, söktes det vanliga indexet först, och sedan de partiella indexen, vilket resulterade i märkbara fördröjningar vid sökning i stora repositorier.
  • Utförandet har accelererats server Kontrollera anslutningen för nya objekt innan de placeras i repositoriet under git push-operationen. Genom att byta till att endast beakta deklarerade länkar under kontrollen, i ett testrepository med 7 miljoner länkar, varav endast 3 % täcktes av push-operationen, minskade dessa optimeringar kontrolltiden med 4.5 gånger.
  • För att skydda mot potentiella heltalsöversvämningar i koden begränsar kommandot "git apply" nu den maximala storleken på patchar som bearbetas. Om en patch överstiger 1 GB kommer ett felmeddelande nu att utlösas.
  • För att skydda mot potentiella sårbarheter har ändringar gjorts för att rensa bort onödig information från headers som anges när h2h3-modulen används med alternativen GIT_TRACE_CURL=1 eller GIT_CURL_VERBOSE=1 tillsammans med HTTP/2.
  • När en utcheckningsoperation utförs på en gren som är en symbolisk länk till en annan gren, skriver kommandot git symbolic-ref HEAD nu ut namnet på målgrenen istället för namnet på den symboliska länken.
  • Lade till stöd för argumentet @{-1} till alternativet "--edit-description" ("git branch --edit-description @{-1}") för att redigera beskrivningen av föregående gren.
  • Lade till kommandot "git merge-tree --stdin" för att tillåta att en lista med alternativ skickas via standardinmatning.
  • På nätverksfilsystem är fsmonitor-hanteraren, som övervakar ändringar i FS, inaktiverad som standard.

Källa: opennet.ru

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster