
Git 2.52 nu tillgänglig som en stabil uppdatering till detta populära distribuerade versionshanteringssystem. Versionen levereras med Nya funktioner, underhållsjusteringar och prestandaförbättringar Resultatet av arbetet av mer än 94 samarbetspartners, varav 33 för första gången i projektet.
Bland de mest anmärkningsvärda förändringarna finns nya delkommandon för att utforska arkiv, ett smartare underhållsarbetsflöde och framsteg mot övergången till SHA-256. Allt detta levereras med en konsekvent och diskret strategi, med praktiskt tillvägagångssätt som hanterar arkiv av varierande storlek.
Nya git 2.52-kommandon för att utforska repositories
Den mest slående nyheten är git last-modifiedUtformad för att effektivt hämta den senaste commiten som berörde varje sökväg. I arkiv med många poster undviker denna metod upprepade historikgenomgångar och kan flera gånger snabbare än att kedja ls-tree + logEnligt interna tester minskas tiderna från sekunder till millisekunder i verkliga scenarier.
Motor last-modified Den utvecklades under årens lopp på GitHub under namnet skuldträdmatar deras "skuld" på trädnivå sedan 2012. Därefter, GitLab-ingenjörer De finjusterade patchuppsättningen för att integrera den i Git 2.52, även om det fortfarande finns funktioner som behöver läggas till, såsom en diskformat för att cacheresultat från tidigare avrättningar.
Experimentmodellen anländer också git repoEtt paraply för att konsultera arkivfunktioner. Med git repo info kan du säga om det är nakna o grunt, formatet för objekt och referenser, och med git repo structure är tryckta strukturell statistik (commit-antal, träd, blobbar, grenar, taggar, etc.). Dessutom, info innehåller det förkortade alternativet -z och kan rapportera objektformatet Begagnade.
För de som arbetar på låg nivå med referenser, git refs summan git refs list (alias för git for-each-ref) Och git refs exists (liknar git show-ref --existsDe erbjuder inte oöverträffade möjligheter, men de koncentrerar frekventa operationer av referenser under ett enda kommando.
Liten men användbar: nu git cmd --help-all Det fungerar också utanför ett förrådDetta gör det enkelt att få tillgång till global hjälp utan att behöva initiera någonting.
Underhåll och prestanda
Git 2.52 introducerar en uppgift geometric inom git maintenance Den undviker allt-i-ett-ompackningar när det är möjligt och tar bort oåtkomliga objekt mer sällan. Uppgiften inspekterar paketen för att bilda en geometrisk progression med antal objekt och kompaktera utan beskärning när det är lämpligt; om operationen skulle sluta i en enda förpackning, utför en git gc komplett för konsolidering och beskärning.
När det gäller hastighet finns det mätbara framsteg: git describe Den använder nu en prioritetskö och vinner runt en 30% prestanda; git remote rename optimerar namnbyte av referenser; git ls-files Det håller indexet spriddt i fler fall; git log -L Det undviker vissa skillnader på trädnivå i sammanslagningar, vilket snabbar upp analysen; och biblioteket xdiff Den innehåller flera optimeringar som Diff och merge har förbättrats på filnivå.
Säkerhet och färdplan till Git 3.0
Övergången från SHA-1 till SHA-256 fortsätter. De första delarna av SHA-256 dyker upp i version 2.52. interoperabilitet mellan algoritmerMålet är att tillåta repositorier med olika hashkoder att utbyta ändringar sömlöst. Det är fortfarande grundarbete, men det banar väg för nästa större utgåva.
En annan planerad förändring för Git 3.0 är att standardgrenen kommer att heta "main". Detta har funnits sedan version 2.52. ledtrådar och hjälpmeddelanden För att underlätta den förändringen, och alla som vill komma vidare, kan kompilera med flaggan WITH_BREAKING_CHANGES att testa planerade beteenden.
Den inkluderar även, som tillval, rostkod skyddad av WITH_RUSTvilket implementerar kodning/avkodning av heltal med variabel bredd. I den här versionen är det inte obligatoriskt och Git 2.52 fungerar utan Rust-kompilatorn, men Git 3.0 förväntas kräva det och utöka de omskrivna styckena.
Förbättringar i arbetsflöden och användbarhet
Användningen av ändrade sökvägsfilter för BloomEtt probabilistiskt filter som snabbar upp resor när de begränsas av rutter. Nu används de även när pathspec innehåller partiella jokertecken (till exempel, foo/bar/*/baz) och i scenarier med flera intressanta rutter, vilket gynnar frågor som de av last-modified och flera historikkommandon.
git sparse-checkout lägg till åtgärden clean För att lösa fall där filer utelämnas från urvalet när definitionen av intresseområden ändras. Med ett enda steg kan du rengör arbetsträdet av oönskade element.
Andra användbara tillägg: ny variabel commitGraph.changedPaths att aktivera som standard --changed-paths en git commit-graph; alternativ stash.index för git stash pop/apply beter sig som om den anropades med --index; git diff-tree mottar --max-depth; git fast-import nu hanterar signerade etiketterOch git repo info Lär dig rapportera objektformat utöver stöd för -z.
Git 2.52 tillgänglighet
Källkoden för Git 2.52 kan laddas ner från officiell webbplats att kompilera den lokalt. Den bör anlända inom de närmaste dagarna och veckorna. arkiv för de viktigaste distributionerna GNU/Linux i Europa (Debian, Ubuntu, Fedora, openSUSE, Arch, etc.) har redan hanterare som Homebrew, MacPorts eller Chocolatey, med de vanliga paketeringstiderna.
Med den här utgåvan stärker Git sin dagliga verksamhet med snabbare och mer användbara kommandonEn mer effektiv underhållsrutin och de första byggstenarna i övergången till SHA-256 finns nu i "main" som standardgren. De som uppgraderar kan nu testa det. git last-modifiedDen nya git repoden geometriska uppgiften git maintenance och resten av justeringarna som, utan att ge ifrån sig ett ljud, gör upplevelsen smidigare i både små och stora arkiv.