Den nya versionen av det distribuerade systemet för hantering av kÀllkod Git 2.37 har presenterats. Git Àr ett av de mest populÀra, pÄlitliga och högpresterande versionshanteringssystemen, som erbjuder flexibla verktyg för icke-linjÀr utveckling, baserade pÄ förgrening och sammanslagning av grenar. För att sÀkerstÀlla integriteten i historiken och motstÄndskraften mot "backdating" anvÀnds implicit hashing av hela den tidigare historiken i varje commit, och det Àr ocksÄ möjligt att verifiera digitala signaturer frÄn utvecklare av specifika taggar och commits.
JÀmfört med föregÄende version har den nya versionen antagit 395 Àndringar, förberedda med deltagande av 75 utvecklare, varav 20 deltog i utvecklingen för första gÄngen. De viktigaste nyheterna:
- Mekanismen för sparsamma index har fĂ€rdigstĂ€llts för allmĂ€n anvĂ€ndning, vilket omfattar endast en del av repositoriet. Sparsamma index gör det möjligt att förbĂ€ttra prestanda och spara utrymme i repositorier dĂ€r partiellt kloning (sparse-checkout) utförs eller dĂ€r man arbetar med en ofullstĂ€ndig kopia av repositoriet. I den nya versionen har arbetet med integration av sparsamma index i kommandona âgit showâ, âgit sparse-checkoutâ och âgit stashâ slutförts. Den mest mĂ€rkbara prestandavinsten frĂ„n att anvĂ€nda sparsamma index observeras i kommandot âgit stashâ, vars körhastighet i vissa situationer har ökat med 80%.
- En ny mekanism för "cruft packs" har implementerats för att packa ned obekanta objekt (unreachable) som inte har nÄgra referenser i förrÄdet (inga grenar eller taggar pekar pÄ dem). Obekanta objekt tas bort av skrÀpmaskinen, men förblir i förrÄdet under en viss tid före borttagning för att undvika kapplöpningar. För att spÄra tiden som obekanta objekt finns mÄste de kopplas till etiketter med tidsstÀmplar för Àndringar av dessa objekt, vilket förhindrar att de lagras i en och samma packfil, dÀr alla objekt har samma Àndringstid. Den tidigare metoden att spara varje objekt i en separat fil ledde till problem nÀr det fanns ett stort antal nya obekanta objekt som Ànnu inte kunde tas bort. Den föreslagna mekanismen "cruft packs" gör det möjligt att lagra alla obekanta objekt i en packfil, medan data om Àndringstiden för varje objekt registreras i en separat tabell, som lagras i en fil med tillÀgget ".mtimes".
- För Windows och macOS har en inbyggd mekanism för att spÄra förÀndringar i filsystemet implementerats, vilket gör det möjligt att undvika att söka igenom hela arbetskatalogen vid sÄdana operationer som "git status". Tidigare kunde externa verktyg för att spÄra förÀndringar i filsystemet, som Watchman, kopplas in via hookar för att övervaka förÀndringar, men detta krÀvde installation av ytterligare program och instÀllningar. Nu Àr denna funktionalitet inbyggd och kan aktiveras med kommandot "git config core.fsmonitor true".
- I kommandot "git sparse-checkout" har stödet för det alternativa lĂ€get "âcone" för metoddefinition av mallar för partiell kloning förklarats som förĂ„ldrat, vilket tillĂ„ter att vid definiering av den del av förrĂ„det som omfattas av kloningen lista enskilda filer med hjĂ€lp av syntaxen för ".gitignore", vilket förhindrar anvĂ€ndning av partiella index för optimering.
- Flexibiliteten för att konfigurera fsync() för att spara Àndringar till disk har ökat. Parametern "core.fsyncMethod" har fÄtt stöd för synkroniseringsstrategin "batch", vilket möjliggör snabbare skrivning av ett stort antal separata filer genom att ackumulera Àndringar i cache för Äterkoppling, som skrivs tillbaka med ett enda fsync()-anrop. Testet som genomfördes, dÀr 500 filer lades till med kommandot "git add", slutfördes pÄ 0,15 sekunder med den nya instÀllningen, medan anropet av fsync() för varje fil tog 1,88 sekunder och utan att anvÀnda fsync tog det 0,06 sekunder.
- Till kommandona för att navigera i grenar, som "git log" och "git rev-list", har en ny parameter lagts till: "--since-as-filter=X", som gör det möjligt att filtrera bort information om kommittéer vars skapelsedatum Àr Àldre Àn "X". Till skillnad frÄn parametern "--since" har det nya kommandot implementerats som ett filter som inte stoppar iterationen efter den första kommittén som Àr Àldre Àn den angivna tiden.
- Vid anvÀndning av kommandot "git remote" med flaggan "-v" visas nu information om partiella kloner av repot.
- InstÀllningen "transfer.credentialsInUrl" har lagts till, som kan anta vÀrdena "warn", "die" och "allow". Om det anges anvÀndaruppgifter i klartext i parametern "remote..url", kommer försök att utföra operationer som "fetch" eller "push" att misslyckas med ett fel om instÀllningen "transfer.credentialsInUrl" Àr "die", eller ge en varning om den Àr "warn".
- Den nya implementationen av det interaktiva lÀget för kommandot "git add -i", som har skrivits om frÄn Perl till C, aktiveras som standard.
KĂ€lla: opennet.ru
