Гит 2.50: Побољшања перформанси за велике репозиторијуме и још много тога

гит-2.50

Пре неколико дана је објављено Објављивање нове верзије пројекта Git 2.50, увођење више од 600 промена вођен активном заједницом која је овог пута обухватала 98 програмера, укључујући 35 нових сарадника.

Ова нова верзија Гита 2.50 истиче се интеграцијом нових команди (git-diff-pairs), новим функцијама за чишћење, филтрирање и одржавање, заменом рекурзивног механизма за спајање са ORT, као и побољшањима перформанси и исправкама грешака.

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

У овој новој верзији Гита 2.50, једна од најважнијих нових функција је оптимизација у третману такозваних „грлих паковања“, То јест, пакети објеката којима није могуће приступити или на које гране или ознаке не указују. Традиционално, Гит је чувао ове објекте у једној, великој датотеци пакета, што је могло изазвати проблеме са перформансама приликом поновног паковања репозиторијума са многим од ових ставки.

Са новом верзијом, Гит вам омогућава да поделите ове пакете непотребних датотека на неколико мањих датотека, што смањује употребу диска и побољшава перформансе улаза/излаза за групне операције. Поред тога, си унесите опцију –combine-cruft-below-size, што омогућава флексибилније комбинујте мале пакете у један него претходна опција –max-cruft-size, без наметања ограничења на комбиновану величину датотеке. Ова нова функција је посебно корисна у пројектима са осиротелим објектима распоређеним у више пакета.

Још једно побољшање усмерено на велика спремишта је експериментална подршка за постепено ажурирање MIDX индекси , која Они чувају информације о објектима у одвојеним слојевима коришћењем битмап датотека, што омогућава брже ажурирање како се додају нове измене. Ово побољшање је кључно за велике репозиторијуме који захтевају брзе операције индексирања без потребе за потпуном обновом метаподатака.

Потпуна замена рекурзивног механизма за спајање са ORT

Гит 2.50 уводи велику промену са трајно уклањање рекурзивног фузионог мотора традиционално. Уместо тога, Употреба ОРТ-а је консолидованаЈедан модернији, одрживији и ефикаснији фузиони мотор. ORT не само да нуди прецизнију анализу конфликата, већ вам омогућава и да проверите да ли је спајање могуће без генерисања додатних објеката. Штавише, команда merge-tree сада укључује опцију –quiet за употребу као тиха провера спајања без модификовања спремишта.

gitt-diff-pairs: решење за проблеме скалабилности

Преглед кода је несумњиво један од стубова модерног колаборативног развоја, а разлике или дифф између ревизија играју важну улогу у овом процесу. Доласком Гита 2.50, представљено је решење дизајнирано за скалабилност: нова команда git-diff-pairs.

Традиционално, да бисте добили поређење између две ревизије, користите команду као што је:

git diff HEAD~1 HEAD

Ово генерише комплетну закрпу која садржи све измене између наведених ревизија. Иако је ефикасна у многим случајевима, може бити проблем са перформансама при раду са великим скуповима измењених датотека.

Зато је команда git-diff-pairs посебно дизајнирана да прима сирове улазне податке директно из излаза команде git diff-tree и ефикасно и прецизно генерише одговарајуће закрпе.

Употреба је једноставна као:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

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

Нове функције за чишћење, филтрирање и одржавање

Гит 2.50 укључује неколико додатних алата дизајнираних за побољшање одржавања репозиторијума:

  • Команда је додата гит рефлог дроп, што вам омогућава да потпуно обришете рефлог за одређену грану, идеално за чишћење историје рада када више не морате да одржавате претходне референце.
  • Опција –филтер cat-file –batch је сада доступан у git-у, омогућавајући вам филтрирање резултата по типу објекта.

Поред тога, истакнуто је и неколико интерних оптимизација:

  • Побољшана употреба симболичких веза, са кеширањем префикса и смањењем сувишних провера.
  • Уклањање зависности од Перла у документацији и тест скриптама, замењујући их шел функцијама или C имплементацијама, што их чини лакшим за компајлирање на системима са минималистичким конфигурацијама.
  • Укључујући контролер разлика корисника за анализу разлика у .ini датотекама.
  • Побољшана компатибилност команде git send-email са SMTP серверима као што је Outlook.

Коначно, ако сте заинтересовани да сазнате више о томе, можете погледати детаље у следећи линк.