UtgÄvan av versionshanteringssystemet Git 2.51

Efter tvÄ mÄnaders utveckling har den distribuerade versionkontrollsystemet Git 2.51 nu slÀppts. Git kÀnnetecknas av hög prestanda och erbjuder verktyg för icke-linjÀr utveckling som baseras pÄ förgrening och sammanslagning av grenar. För att sÀkerstÀlla integriteten i historiken och motstÄndskraft mot retroaktiva Àndringar anvÀnds implicit hashning av hela tidigare historik i varje commit, sÄvÀl som verifiering med digitala signaturer av utvecklare för individuella tags och commits. Git-koden distribueras under GPLv2+-licensen.

JÀmfört med den förra versionen har 506 förÀndringar antagits i den nya versionen, framtagna med deltagande av 91 utvecklare (varav 21 deltog i utvecklingen av Git för första gÄngen). Huvudsakliga nyheter (1, 2, 3):

  • Prestandan för kommandona "git push" och "git fetch" har förbĂ€ttrats i repon med ett stort antal referenser. Hastigheten har ökats genom att uppdatera referenser i batch, dĂ€r flera referenser behandlas i en och samma transaktion, istĂ€llet för att skapa en separat transaktion för uppdatering av varje referens. Denna optimering har avsevĂ€rt ökat hastigheten för backend "reftable", som nu övertrĂ€ffar backend "files" i prestanda. Till exempel, i ett testrepo med 10 000 referenser ökade prestandan för "git fetch" med backend "reftable" 22 gĂ„nger, medan prestandan med backend "files" ökade 1,25 gĂ„nger. För "git push" var ökningen 18 och 1,21 gĂ„nger, respektive.
  • En ny metod för packning av delar av repot i packfiler, som inte Ă€r kopplade till att spĂ„ra oĂ„tkomliga objekt som det inte finns referenser för i repot (dvs. inga grenar eller tags pekar pĂ„ dem), har föreslagits. Informationen om oĂ„tkomliga objekt lagras i separata packfiler ("cruft packs"), vilket ledde till behovet av att Ă„terspegla dem i multipack-index (MIDX) för att omfatta objekt som ursprungligen var oĂ„tkomliga och endast lagrades i cruft-paketet, men som blev Ă„tkomliga efter en hĂ€nvisande commit.

    I den nya versionen har repackningen av pack-filer sÀkerstÀllt att ytterligare kopior av nÄbara objekt, som endast lagras i cruft-filer, bevaras. Denna förÀndring garanterar att uppsÀttningen av pack-filer som anvÀnds för att lagra nÄbara objekt inte innehÄller objekt som refererar till andra objekt lagrade utanför denna uppsÀttning. För att utesluta otillgÀngligt innehÄll frÄn flera paketindex (MIDX) av cruft-filer föreslÄs instÀllningen «repack.MIDXMustContainCruft», som avsevÀrt minskar storleken pÄ sÄdana index. Aktiveringen av instÀllningen i GitHub-arkivet har resulterat i en minskning av storleken pÄ MIDX-indexen med 38%, en ökning av hastigheten för skrivning till MIDX-indexen med 35% och en förbÀttrad lÀshastighet pÄ 5%.

  • Till kommandot «git pack-objects» har en ny funktion «—path-walk» lagts till, som inkluderar en ny metod för insamling av information om objekt vid repackning av pack-filer. IstĂ€llet för att gĂ„ igenom objekt i ordning av revisioner, sĂ„ packas objekten med hjĂ€lp av en genomgĂ„ng av filvĂ€gar i lĂ€get «—path-walk», vilket gör det möjligt att packa alla objekt med samma filvĂ€g pĂ„ en gĂ„ng. Denna metod gör det möjligt att utesluta heuristiken som anvĂ€nder hashning för att bestĂ€mma kopplingen av ett objekt till dess filvĂ€g, samt att slippa sortering av objekt innan packningen. I lĂ€get «—path-walk» blir storleken pĂ„ de genererade pack-filerna betydligt mindre Ă€n vid gruppering av objekt med hjĂ€lp av hashar.
  • Ett format har definierats för att utbyta sparade tillstĂ„nd av arbetskatalogen och index i ett repository, skapade med kommandot «git stash». Det nya formatet gör det möjligt att koda sparade Ă€ndringar (stash-poster) som en sekvens av commits. För import och export föreslĂ„s underkommandona «git stash import» och «git stash export», som kan anvĂ€ndas för att överföra sparade tillstĂ„nd frĂ„n ett system till ett annat och utföra push- eller pull-operationer med dessa tillstĂ„nd som med vanliga grenar eller taggar. git stash export —to-ref refs/stashes/my-stash git push origin refs/stashes/my-stash 
 git fetch origin ‘+refs/stashes/*:refs/stashes/*’ git stash import refs/stashes/my-stash
  • I kommandot «git cat-file», som skriver ut innehĂ„llet i angivna objekt, har funktionerna «—batch» och «—batch-check» implementerat möjligheten att visa information om saknade objekt (t.ex. pĂ„ grund av skadade förrĂ„d) och submoduler. Tidigare, nĂ€r sökvĂ€gen indikerade en submodul, rapporterade kommandot «git cat-file —batch-check» «missing», men nu kommer det att visa objektets identifierare.
  • I kommandot «git log» anvĂ€nds optimeringar baserade pĂ„ Bloom-filter för att snabba upp sökningen i Ă€ndringshistoriken nĂ€r filter med flera filvĂ€gar anges, till exempel «git log — path/to/a path/to/b».
  • Kommandona «git switch» och «git restore» har stabiliserats, de har betraktats som experimentella sedan 2019. Befallningarna presenteras som moderna alternativ till «git checkout», som separerar sĂ„dana mindre relaterade funktioner av detta kommando som hantering av grenar (byter och skapar) och Ă„terstĂ€llning av filer i arbetskatalogen.
  • Kommandot «git whatchanged», som Ă€r ekvivalent med «git log —raw», har utsetts till förĂ„ldrat och planeras för borttagning i Git-version 3.0.
  • I kommandot «git for-each-ref» har alternativet «—start-after» lagts till, vilket kan anvĂ€ndas tillsammans med alternativet «—count» för att organisera sidvis utmatning.
  • I kommandona «git merge» och «git pull» har alternativet «—compact-summary» lagts till för att anvĂ€nda ett kompakt format för sammanfattande information om Ă€ndringar istĂ€llet för diffstat-formatet.
  • I Git-koden har anvĂ€ndning av nyckelordet «bool», som introducerades i C99-standarden, tillĂ„tits. Vissa C99-funktioner som experimentellt anvĂ€nds i Git har ocksĂ„ dokumenterats (till exempel planeras det att tillĂ„ta anvĂ€ndning av konstruktioner som «(struct foo){ .member = value };» i mitten av 2026). En kompilator med stöd för C99 Ă€r obligatorisk för Git sedan 2021, men funktionerna i C99-specifikationen införs mycket försiktigt för att bibehĂ„lla kompatibiliteten med kompilatorer som bara delvis stöder denna standard.
  • Reglerna för patchmottagning har Ă€ndrats för att tillĂ„ta att patchar skickas under ett alias, snarare Ă€n endast under utvecklarens riktiga namn. Ändringen stĂ€mmer överens med patchmottagningsreglerna för Linux-kĂ€rnan.
  • Listan över inkompatibla förĂ€ndringar som kommer att tillĂ€mpas i Git-grenen 3.0 har uppdaterats. Bland de betydande förĂ€ndringarna i den kommande utgĂ„van av Git 3.0 mĂ€rks standardövergĂ„ngen till objektidentifierare baserade pĂ„ SHA-256 hash-algoritmen vid initiering av nya förrĂ„d och anvĂ€ndning av "reftable"-formatet för att lagra referenser till grenar och taggar i förrĂ„det (den blockbaserade lagringen frĂ„n JGit-projektet har anvĂ€nts, optimerad för att lagra ett mycket stort antal referenser).

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster