Гит 2.51 стиже са кључним побољшањима перформанси и новим функцијама

гит 2.51

Након два месеца интензивног рада, развојна заједница Гит представља Гит верзију 2.51, ажурирање које Обједињује 506 промена, у којима је учествовао 91 програмер, од којих је 21 допринело први пут.

Ово издање представља побољшања дизајнирана да побољшају перформансе и поједноставе управљање репозиторијумом, укључујући оптимизације перформанси за git-push и git-fetch, као и неколико промена које се крећу ка новој 3.x грани.

Нове значајке Гит 2.51

Једна од најважнијих карактеристика Гита 2.51 је Оптимизација команди git push и git fetch у репозиторијумима са великим бројем референци. Кључ овог побољшања је у пакетном ажурирању, који обрађује више линкова у једној трансакцији, а не појединачно.

Захваљујући овој оптимизацији, Рефлабилни бекенд сада надмашује традиционални бекенд за датотеке.У тестовима са репозиторијумима који садрже до 10 референци, перформансе git fetch-а су се повећале 000 пута за reftable и 22 пута за датотеке, док су се git push побољшале 1.25 пута и 18 пута, респективно.

Још једна важна иновација је iУвођење такозваних „cruft“ пакета, дизајниране за складиштење неприступачних објеката који нису повезани са гранама или ознакама. Ови објекти, који су претходно били расути, сада се може управљати у одвојеном паковањус, што их чини лакшим за контролу и смањује величину индекса са више пакета (MIDX).

Са ново подешавање repack.MIDXMustContainCruft, Git избегава укључивање ових објеката у главне индексеУ тестовима на GitHub-у, ова конфигурација је смањила величину индекса за 38%, убрзала писање за 35% и побољшала читање за 5%.

Нови приступ паковању објеката

El Команда git pack-objects укључује опцију –path-walk, који уводи иновативну методу да реорганизујете датотеке паковања. Уместо обраде објеката на основу њихових хешева, Гит сада може да их итерира на основу путање до њихове датотеке, пакујући оне који деле исту локацију заједно. Овај приступ елиминише потребу за претходним сортирањем објеката и резултира мањим, ефикаснијим паковањем датотека.

И са овом верзијом Нови формат за размену радних стања стабла и индекса креираних помоћу Git Stash-а је стандардизован.Сада је могуће извозити и увозити спремљене ставке баш као гране или ознаке, што олакшава премештање стања са једног система на други.

На пример:

git stash export --to-ref рефс/сташес/ми-сташ git push оригин рефс/сташес/ми-сташ git fetch оригин '+рефс/сташес/*:рефс/сташес/*' git stash import рефс/сташес/ми-сташ

Побољшања класичних команди

Неколико Гит команде су добиле релевантна ажурирања:

  • git cat-file сада пријављује недостајуће објекте и подмодуле, приказујући идентификаторе уместо само обележавања „недостаје“.
  • git log има користи од оптимизација Блум филтера, убрзавајући претрагу са више путања до датотека.
  • Команде git switch и git restore, које се сматрају експерименталним од 2019. године, коначно су стабилизоване као модерне алтернативе за git checkout.
  • Команда `git whatchanged`, еквивалентна команди `git log –raw`, је застарела и биће уклоњена у верзији `Git 3.0`.
  • git for-each-ref добија опцију –start-after, која заједно са –count омогућава пагинацију излаза.
  • git merge и git pull сада укључују опцију –compact-summary, која пружа сажетији формат резимеа.

Подршка за C99 и нова правила доприноса

Гит наставља да прилагођава свој код карактеристикама C9 стандарда9. Иако је компатибилан компајлер потребан од 2021. године, програмери опрезно раде на одржавању компатибилности са компајлерима који га само делимично имплементирају.

Поред тога, уведена је значајна промена у политици доприноса: Закрпе се сада могу слати под псеудонимом, одлука усклађена са правилима Линукс кернела и осмишљена да понуди већу флексибилност сарадницима.

У очекивању Гита 3.0

El Развојни тим је такође ажурирао план рада на Гит 3.0., где се истичу две кључне промене: подразумевана употреба SHA-256 као идентификатора објекта и усвајање reftable формата за чување референци грана и ознака. Ова побољшања имају за циљ побољшање безбедности и ефикасности у све већим и сложенијим спремиштима.

izvor: https://lore.kernel.org