Utgivning av versionshanteringssystemet Git 2.56

Release av det distribuerade versionshanteringssystemet Git 2.56 har presenterats. Koden för Git distribueras under GPLv2+-licensen. JÀmfört med den tidigare utgÄvan har den nya versionen tagit emot 748 Àndringar, förberedda med deltagande av 104 utvecklare, varav 39 deltog i utvecklingen av Git för första gÄngen. Huvudnyheterna (1, 2, 3):

  • LĂ€gg till "git add —resolved"-lĂ€get för att lösa konflikter vid sammanslagning av grenar, vilket kontrollerar filer för konfliktsymboler och vid upptĂ€ckten av en symbol i minst en fil ger ett felmeddelande, indexerar inga filer och visar en lista över filer som krĂ€ver Ă„tgĂ€rd. Till skillnad frĂ„n kommandot "git add —update" behandlar det nya lĂ€get endast filer som Ă€r i konflikt, medan Ă€ndrade filer som inte Ă€r relaterade till konflikten ignoreras, vilket gör det möjligt att sĂ€kert avsluta sammanslagningen av grenar Ă€ven om det finns andra oavslutade Ă€ndringar i arbetskatalogen (kommandot "git add —update" lade till alla tidigare spĂ„rade Ă€ndrade filer i arbetskatalogen till indexet).
  • Arbetet med stora förrĂ„d har avsevĂ€rt snabbats upp genom optimering av algoritmen för att söka de senaste gemensamma committernas vid sammanslagning av grenar och vid jĂ€mförelse av commits. Under arbetets gĂ„ng beaktas nu committers som tillhör enbart en av grenarna, vilket möjliggör att avbryta skanning sĂ„ snart alla möjliga gemensamma föregĂ„ngare har upptĂ€ckts, utan att slösa tid pĂ„ ytterligare genomgĂ„ng av Ă€ndringshistoriken. I ett av de testade förrĂ„den ökade sökhastigheten i genomsnitt 20 gĂ„nger, medan i ett annat förrĂ„d nĂ„dde hastighetens ökning 70 gĂ„nger. Vid körning av kommandot "git merge-base —all v4.8 v4.9" i ett förrĂ„d med Linux-kĂ€rnan minskade antalet genomsökningssteg frĂ„n 167 tusen till 3.8 tusen.
  • För serveranvĂ€ndning har lĂ€get för ompackning "—path-walk" anpassats, vilket möjliggör skapandet av mer kompakta pack-filer genom att gruppera objekt baserat pĂ„ deras sökvĂ€g i mapptrĂ€det (till exempel har anvĂ€ndningen av "—path-walk" för Fluent UI minskat storleken pĂ„ pack-filen frĂ„n 558 MB till 164 MB). I den nya versionen har möjligheten att anvĂ€nda lĂ€get "—path-walk" tillsammans med nĂ„barhetsbitmap (reachability bitmap) och deltaöar (delta island), som anvĂ€nds av git-hosting för att pĂ„skynda arbetet och isolera forkar frĂ„n den huvudsakliga repot, implementerats.
  • Flaskhalsar som ledde till överflödiga berĂ€kningar i stora repon har tagits bort: onödiga filstatuskontroller vid skrivning till reftable har eliminerats; dubbelgenomsökning av listan vid varje insĂ€ttning av en ny pack-fil har uteslutits; operationerna med reftable, dĂ€r mĂ„nga borttagningsposter har samlats, har pĂ„skyndats; arbetet med "git diff" har optimerats nĂ€r filvĂ€gar anges som begrĂ€nsningar. Efter dessa optimeringar har arbetet med reftable vid ett stort antal borttagningar pĂ„skyndats med 65 gĂ„nger (frĂ„n 13 sekunder till 0,2 sekunder), och körning av det problematiska kommandot "git diff" i Chromium-repot med 500000 element i indexet tar nu 0,07 sekunder istĂ€llet för 8 minuter.
  • Den experimentella kommandon "git history", som ger möjligheter att skriva om Ă€ndringshistorik, har lagt till operationen "git history drop" för att ta bort en vald commit med automatisk koppling av dess efterkommande till förĂ€ldrakommitten.
  • Kommandot "git branch —delete-merged ‘origin/*’ ‘topic-*'" har lagts till för sĂ€ker borttagning av grupper av lokala grenar vars Ă€ndringar redan har överförts till det externa repot. Masker fĂ„r anvĂ€ndas för att filtrera grenar och repon. För att analysera kandidater för borttagning utan att faktiskt utföra operationen kan flaggan "—dry-run" anvĂ€ndas.
  • Kommandot "git refs create|update|delete|rename" har lagts till dĂ€r lĂ„gnivĂ„operationer för att skapa, ta bort, omdöpa och uppdatera referenser har sammanfogats.
  • Till kommandot "git bisect run" har en option "—reset-when-found=[]" lagts till, som automatiskt Ă„terstĂ€ller repot till tillstĂ„ndet före sökningen eller lĂ€mnar den problematiska commit aktiv, utan att behöva köra kommandot "git bisect reset" separat.
  • Flaggan "—linearize" har lagts till i kommandot "git replay" för att anvĂ€nda en platt sammanslagningsstruktur, liknande "git rebase —no-rebase-merges", men utan att referera till arbetskatalogen.
  • I kommandot "git log —follow" implementerades spĂ„rning av filnamn som Ă€ndrats i en icke-linjĂ€r Ă€ndringshistorik, till exempel vid sammanslagning av undergrenar. FilvĂ€gen lagras nu separat för varje förĂ€lder commit, vilket gör resultatet oberoende av ordningen för att fĂ„ Ă„tkomst till commit-historien.
  • Möjligheten att anvĂ€nda kommandot "git repack -a —filter=blob:limit=1m —drop-filtered" har lagts till för att ta bort stora blob-objekt, som laddats on demand frĂ„n ett extern arkiv och som inte anvĂ€nds i den aktuella indexen. Vid senare Ă„tkomst till dessa objekt kommer de automatiskt att laddas om.
  • I kommandot "git log —graph" har indragningar implementerats för grafer med flera oberoende rotpunkter för att visuellt separera orelaterade commits.
  • Typiska skrivfel, som att ange "git push origin/main" istĂ€llet för "git push origin main" eller "git branch —set-upstream-to origin main" istĂ€llet för "git branch —set-upstream-to=origin/main", har identifierats och meddelanden ges om korrekt anvĂ€ndning.

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