Git 2.50: Prestandaförbättringar för stora repositorier och mer

git-2.50

För några dagar sedan meddelades det Släpp av den nya versionen av Git 2.50-projektet, införande av mer än 600 ändringar drivet av en aktiv community som den här gången inkluderade 98 utvecklare, inklusive 35 nya bidragsgivare.

Denna nya version av Git 2.50 kännetecknas av integrationen av nya kommandon (git-diff-pairs), nya funktioner för rengöring, filtrering och underhåll, utbytet av den rekursiva merge-motorn med ORT, samt prestandaförbättringar och buggfixar.

Git 2.50 Viktiga nya funktioner

I den här nya versionen av Git 2.50 är en av de viktigaste nya funktionerna optimering i behandlingen av så kallade "cruft packs", Det vill säga paket med objekt som är oåtkomliga eller inte refereras till av grenar eller taggar. Traditionellt lagrade Git dessa objekt i en enda, stor paketfil, vilket kunde orsaka prestandaproblem vid ompaketering av repositorier med många av dessa objekt.

Med den nya versionen, Git låter dig dela upp dessa cruft-paket i flera mindre filer, vilket minskar diskanvändningen och förbättrar prestandan för in- och utdata för massoperationer. Dessutom soch ange alternativet –combine-cruft-below-size, vilket tillåter kombinera små paket till ett mer flexibelt än det tidigare alternativet –max-cruft-size, utan att begränsa den kombinerade filstorleken. Den här nya funktionen är särskilt användbar i projekt med överblivna objekt utspridda över flera paket.

En annan förbättring som syftar till storskaliga arkiv är experimentellt stöd för den stegvisa uppdateringen av MIDX-index , som De lagrar information om objekt i separata lager med hjälp av bitmappsfiler, vilket möjliggör snabbare uppdateringar när nya commits läggs till. Denna förbättring är avgörande för stora arkiv som kräver snabba indexeringsåtgärder utan att behöva bygga om metadata helt.

Fullständig ersättning av den rekursiva sammanslagningsmotorn med ORT

Git 2.50 introducerar en stor förändring med permanent borttagning av den rekursiva fusionsmotorn traditionell. Istället, användningen av ORT konsoliderasen en modernare, mer underhållbar och effektiv fusionsmotor. ORT erbjuder inte bara mer exakt konfliktanalys, utan låter dig också verifiera om en sammanslagning är möjlig utan att generera ytterligare objekt. Dessutom inkluderar merge-tree-kommandot nu ett –quiet-alternativ för användning som en tyst sammanslagningskontroll utan att modifiera arkivet.

gitt-diff-par: lösningen på skalbarhetsproblem

Kodgranskning är utan tvekan en av grundpelarna i modern samarbetsutveckling, och skillnader eller olikheter mellan versioner spelar en viktig roll i denna process. Med lanseringen av Git 2.50 har en lösning utformad för skalbarhet introducerats: det nya kommandot git-diff-pairs.

Traditionellt sett använder man ett kommando som: för att jämföra två versioner

git diff HEAD~1 HEAD

Detta genererar en komplett patch som innehåller alla ändringar mellan de listade versionerna. Även om det är effektivt i många fall kan det vara ett prestandaproblem vid hantering av stora mängder modifierade filer.

Det är därför git-diff-pairs specifikt utformades för att ta emot rå indata direkt från utdata från git diff-tree, och generera motsvarande patchar effektivt och noggrant.

Användningen är så enkel som:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Det här kommandot tar de angivna blobparen och genererar exakt diff-utdata, vilket bevarar kontextuell information och gör att arbete kan delas upp i mindre batcher. Detta öppnar dörren för parallell bearbetning, förbättrar resurseffektiviteten och underlättar skalbarhet i diff-baserade verktyg som GitLab.

Nya funktioner för rengöring, filtrering och underhåll

Git 2.50 innehåller flera ytterligare verktyg utformade för att förbättra underhållet av arkiv:

  • Kommandot har lagts till git reflog drop, vilket låter dig helt ta bort refloggen för en specifik gren, perfekt för att rensa upp din arbetshistorik när du inte längre behöver underhålla tidigare referenser.
  • Alternativet -filtrera cat-file –batch är nu tillgängligt i git, vilket gör att du kan filtrera resultat efter objekttyp.

Dessutom framhävs flera interna optimeringar:

  • Förbättrad användning av symboliska länkar, med prefixcachning och minskning av redundanta kontroller.
  • Borttagning av Perl-beroenden i dokumentation och testskript, ersättning av dem med skalfunktioner eller C-implementationer, vilket gör dem enklare att kompilera på system med minimalistiska konfigurationer.
  • Inklusive en kontroller användardiff för analys av skillnader i .ini-filer.
  • Förbättrad kompatibilitet mellan git send-email-kommandot och SMTP-servrar som Outlook.

Slutligen, om du är intresserad av att veta mer om det, kan du konsultera detaljerna i följande länk.