Release av Git 2.37 källkontrollsystem

Utgivningen av det distribuerade källkontrollsystemet Git 2.37 har tillkännages. Git är ett av de mest populära, pålitliga och högpresterande versionskontrollsystemen, som tillhandahåller flexibla icke-linjära utvecklingsverktyg baserade på förgrening och sammanslagning. För att säkerställa historiens integritet och motståndet mot retroaktiva förändringar används implicit hash av hela den tidigare historien i varje commit; det är också möjligt att certifiera individuella taggar och commits med digitala signaturer från utvecklarna.

Jämfört med den tidigare utgåvan, antogs 395 ändringar i den nya versionen, beredd med deltagande av 75 utvecklare, varav 20 deltog i utvecklingen för första gången. Huvudsakliga innovationer:

  • Mekanismen för partiella index (glesa index), som endast täcker en del av förvaret, har gjorts redo för utbredd användning. Partiella index kan förbättra prestanda och spara utrymme i arkiv som utför partiella kloningsoperationer (sparse-checkout) eller arbetar med en ofullständig kopia av arkivet. Den nya utgåvan fullbordar integreringen av partiella index i git show, git sparse-checkout och git stash kommandon. Den mest märkbara prestandafördelen med att använda partiella index ses med git stash-kommandot, som har sett en 80% ökning av exekveringshastigheten i vissa situationer.
  • En ny "cruft packs"-mekanism har implementerats för att packa oåtkomliga objekt som inte hänvisas till i förvaret (som inte refereras av grenar eller taggar). Oåtkomliga objekt raderas av sophämtaren, men ligger kvar i förvaret en viss tid innan de raderas för att undvika tävlingsförhållanden. För att spåra perioden för förekomsten av oåtkomliga objekt är det nödvändigt att fästa taggar till dem med tidpunkten för ändring av liknande objekt, vilket inte tillåter lagring av dem i en packfil där alla objekt har en gemensam ändringstid. Tidigare ledde att spara varje objekt i en separat fil till problem när det fanns ett stort antal färska, oåtkomliga objekt som ännu inte var kvalificerade för radering. Den föreslagna "cruft packs"-mekanismen låter dig lagra alla oåtkomliga objekt i en packfil och reflektera data om modifieringstiden för varje objekt i en separat tabell lagrad i en fil med filtillägget ".mtimes".
  • För Windows och macOS finns det en inbyggd mekanism för att spåra ändringar i filsystemet, vilket gör att du kan undvika iteration över hela arbetskatalogen när du utför operationer som "git status". Tidigare kunde externa verktyg för att spåra ändringar i FS, som Watchman, anslutas via krokar för att spåra ändringar, men detta krävde installation av ytterligare program och konfiguration. Nu är den angivna funktionen inbyggd och kan aktiveras med kommandot "git config core.fsmonitor true".
  • I kommandot "git sparse-checkout" har stöd för ett alternativ till "—cone"-läget, metoden för att definiera mallar för partiell kloning, förklarats föråldrat, vilket tillåter, när man bestämmer vilken del av förvaret som är föremål för kloningsoperationen, för att lista enskilda filer med ".gitignore"-syntaxen, som inte tillåter användning för optimering av partiella index.
  • Ökad flexibilitet vid konfigurering av fsync()-anropet för att tömma ändringar på disk. Stöd för "batch"-synkroniseringsstrategin har lagts till i parametern "core.fsyncMethod", vilket gör det möjligt att påskynda arbetet när du skriver ett stort antal enskilda filer genom att ackumulera ändringar i återskrivningscachen, som återställs av en enda fsync() ring upp. Testet, som resulterade i att 500 filer lades till med "git add"-kommandot, slutfördes på 0.15 sekunder när det nya läget aktiverades, medan anropet av fsync() tog 1.88 sekunder för varje fil, och utan att använda fsync - 0.06 sekunder .
  • Branch-traversal-kommandon som "git log" och "git rev-list" har nu ett alternativ "-since-as-filter=X" som låter dig filtrera bort information om commits som är äldre än "X". Till skillnad från alternativet "—sedan" implementeras det nya kommandot som ett filter som inte stoppar sökningen efter den första commit som är äldre än den angivna tiden.
  • I kommandot "git remote", när flaggan "-v" specificeras, visas information om partiella kloner av förvaret.
  • Lade till inställningen "transfer.credentialsInUrl", som kan ta värdena "warn", "die" och "allow". Om det anges i parametern "fjärr. .url"-referensuppgifter i klartext, försök att utföra en "hämta"- eller "push"-operation kommer att misslyckas med ett fel om "transfer.credentialsInUrl"-inställningen är inställd på "die", eller en varning om den är inställd på "warn".
  • Som standard är den nya implementeringen av det interaktiva läget för kommandot "git add -i", omskrivet från Perl till C, aktiverat.

Källa: opennet.ru

Lägg en kommentar