Den nya utgÄvan av det distribuerade versionshanteringssystemet Git 2.31 Àr nu tillgÀnglig. Git Àr ett av de mest populÀra, pÄlitliga och högpresterande systemen för versionshantering, som erbjuder flexibla verktyg för icke-linjÀr utveckling baserat pÄ grenhantering och sammanslagning. För att sÀkerstÀlla integriteten i historien och motstÄndskraft mot bakÄtriktade Àndringar anvÀnds implicit hashning av hela den tidigare historiken i varje commit, och det Àr Àven möjligt att verifiera digitala signaturer av utvecklare för specifika taggar och commits.
JÀmfört med den föregÄende versionen har den nya versionen tagit emot 679 Àndringar, förberedda med deltagande av 85 utvecklare, varav 23 deltog i utvecklingen för första gÄngen. De viktigaste nyheterna Àr:
- Kommandot "git maintenance" har lagts till, vilket möjliggör periodiskt underhĂ„ll pĂ„ system utan stöd för cron. Till exempel kan det nya kommandot organisera en periodisk körning av processen för att packa repot, sĂ„ att man slipper vĂ€nta pĂ„ att repot ska lĂ„sas under automatisk packning vid körning av olika kommandon. Kommandot "git maintenance" gör det möjligt att utföra optimeringar och underhĂ„ll av den optimala strukturen för repot i bakgrunden, utan att blockera interaktiva sessioner â en gĂ„ng i timmen utförs arbete för att proaktivt ladda ner nya objekt frĂ„n det fjĂ€rrlagrade repot och uppdatera filen med commitgrafen, och varje natt startas processen för att packa repot.
- Stöd för att hÄlla en omvÀnd index pÄ disk (revindex) för pack-filer har lagts till. Kom ihÄg att Git lagrar all data i form av objekt som placeras i separata filer. För att öka effektiviteten i arbetet med repot placeras objekten dessutom i pack-filer, dÀr informationen presenteras som en ström av objekt som följer efter varandra (ett liknande format anvÀnds vid överföring av objekt med kommandona git fetch och git push). För varje pack-fil skapas en indexfil (.idx) som snabbt gör det möjligt att identifiera förskjutningen i pack-filen för ett visst objekt utifrÄn objektets ID. Den föreslagna omvÀnda indexen (.rev) i Git 2.31 syftar till att optimera processen för att identifiera ett objekts ID baserat pÄ information om objektets placering i pack-filen.
Tidigare gjordes denna transformation i realtid under tolkningen av pack-filer och lagrades endast i minnet, vilket inte tillÀt ÄteranvÀndning av sÄdana index och tvingade till att generera index varje gÄng. Indexeringsoperationen handlar om att bygga en matris av objekt-position-par och sortera den efter position, vilket kan ta lÄng tid för stora pack-filer.
Till exempel utfördes operationen för att visa innehÄllet i objekt med hjÀlp av ett direkt index 62 gÄnger snabbare Àn operationen för att visa storlek pÄ objekt, för vilken data om relationen mellan position och objekt inte indexerades. Efter att ha anvÀnt ett omvÀnt index tog dessa operationer ungefÀr samma tid. OmvÀnda index gör ocksÄ att operationer för att skicka objekt under fetch- och push-kommandon kan accelereras genom direkt överföring av redan fÀrdiga data frÄn disken. Som standard skapas inte omvÀnda index, dess generering krÀver att instÀllningen "git config pack.writeReverseIndex true" aktiveras följt av att packa om repository med kommandot "git repack -Ad".
- Prestandaoptimeringar har lagts till baserade pÄ den nya commit-graph-filformatet, som anvÀnds för att optimera Ätkomsten till information om commits, och nya data om commitens generationsnummer, som kan anvÀndas för att pÄskynda ytterligare operationer med commits.
- Möjligheterna att ÄsidosÀtta namnet pÄ huvudgrenen, som anvÀnds som standard i nya repositoryn (instÀllningen init.defaultBranch), har utökats. NÀr man gör anrop till externa repository försöker git att extrahera grenen som HEAD pekar pÄ, dvs. om den externa server anvÀnder "main" som standardgren, kommer operationen "git clone" att försöka extrahera "main" lokalt. I Git 2.31 har stöd för sÄdan extraktion nu implementerats Àven för tomma repository. Till exempel, vid lokal kloning av ett nytt repository innan de första patcharna lÀggs till, kommer den lokala kopian nu att innehÄlla det externa servern namnet pÄ huvudgrenen som standard.
- Till kommandot "git rev-list" har alternativet "--disk-usage" lagts till, vilket möjliggör att sammanfatta storleken pÄ objekten.
- I förvÀntan pÄ den kommande ersÀttningen av backend för att utföra sammanslagningar har identifieringen av omnamnandenoptimerats avsevÀrt.
- Stödet för den förÄldrade regex-biblioteket PCRE1 har avbrutits.
- Det har tillhandahÄllits möjlighet att tvinga förbud mot anvÀndning av förkortade lÀnkar, som gÀller oavsett hash-algoritm. Förbudet aktiveras genom att sÀtta vÀrdet "no" för parametern core.abbrev.
- Alternativet "âpath-format=(absolute|relative)" har lagts till kommandot "git rev-parse" för att uttryckligen definiera utdata av relativa eller absoluta sökvĂ€gar.
- I skripten för autokomplettering av inmatning i Bash har det blivit enklare att lÀgga till kompletteringsregler för egna "git"-undermand.
- Alternativet "âstdin" har lagts till kommandot "git bundle" för att lĂ€sa lĂ€nkar frĂ„n standardinmatningsströmmen.
- Ett nytt alternativ "âdiff-merges=" har lagts till kommandot "git log".
- Alternativet "âdeduplicatecan" har lagts till kommandot "git ls-files" för att ta bort dubbletter vid utdata.
- Nya masker för att utesluta commit-intervall har lagts till â "^!" och "^-".
- Alternativen "âleft-only" och "âright-only" har lagts till kommandot "git range-diff" för att visa endast ena sidan av det jĂ€mförda intervallet.
- Alternativen "âskip-to=" och "ârotate-to=" har lagts till kommandona "git diff" och "git log" för att hoppa över eller flytta till slutet av startvĂ€gar.
- Alternativet "âskip-to=" har lagts till kommandot "git difftool" för att Ă„teruppta en avbruten session frĂ„n en valfri vĂ€g.
- Beteendekoden (Code-of-conduct), som definierar grundlÀggande principer för att lösa konfliktsituationer mellan utvecklare, har uppdaterats till version 2.0 (tidigare anvÀndes version 1.4).
KĂ€lla: opennet.ru
