Издаване на разпределена система за управление на изходния код Git 2.22

Представено издаване на разпределена система за управление на изходните текстове Git 2.22.0. Git е една от най-популярните, надеждни и високопроизводителни системи за управление на версии, предлагаща гъвкави инструменти за нелинейно разработване, основани на разклонения и сливане на клонове. За да се гарантира целостта на историята и устойчивостта на измененията с обратна дата, се използва неявно хеширане на цялата предишна история във всеки комит, също така е възможно удостоверяване с цифрови подписи на отделни тагове и комити от разработчиците.

В сравнение с предишния релиз, новата версия съдържа 745 изменения, подготвени с участието на 74 разработчици, от които 18 са участвали за първи път в разработката. Основни нововъведения:

  • Достъпен от версия 1.18, новият режим за преместване на набор от комити «git rebase —rebase-merges» замени старата опция «—preserve-merges», която вече е маркирана като остаряла. Операцията «git rebase» се използва за замяна на серия комити с нов базов комит, например за преместите отделна клонка, в която се разработва нова функция, към актуалното състояние на master-клонката, включваща поправки, добавени след разклоняването:

    o — o — o (my-feature)

    /

    o — o — o — o — o (master)

    o — o — o (my-feature)

    /

    o — o — o — o — o (master)

    За запазване на структурата на разклонението в преместваната клонка преди това можеше да се използва опцията «—preserve-merges», която при стартиране в интерактивен режим (git rebase -i —preserve-merges) позволяваше редактиране на историята на комитите, но не гарантираше пълно запазване на структурата на хранилището. Въведеният режим «—rebase-merges» позволява да се запази структурата на промените в преместваната клонка, предоставяйки пълен набор от интерактивни операции, включително премахване, пренареждане и преименуване на комити.

    Например, «—rebase-merges» позволява да прехвърлите комити от отделна клонка на по-нова master-клонка, като запазите структурата на разклонението в преместваната клонка и внесете на ходу някои промени в бележките към комитите.

  • Добавена е поддръжка за създаване на нова клонка на основата на резултата от определяне на базата на сливане между две други клонки (merge base, прикрепяне към общ предшественик) с помощта на конструкциите «git branch new A…B» и «git checkout -b new A…B», в които «A…B» подразбира определяне на базата на сливане между двата указани комита, подобно на това как «git checkout A…B» прехвърля HEAD на базовия комит и «diff A…B» показва промените между комита «B» и общия с комита «A» предшественик.

    Например, при работа с отделна клон my-feature предложената възможност може да се използва, когато е необходимо да се започне от друга клон, например, от същото място в master клона, от което е извлечен клон my-feature. По-рано това изискваше ръчно проучване на историята на промените, което създаваше неудобства при наличие на обширна история на промените, след което се изпълняваше «git merge-base master my-feature» за изчисляване на хеш базата на сливането между клоновете master и my-feature и се създаваше нов клон относно общия предшественик «git branch my-other-feature хеш». В Git 2.22 за създаване на клон спрямо базата на сливането на два други клона може да се използва синтаксис «git branch my-other-feature A…B»;

  • Добавена опция «git branch —show-current» за показване на името на клона, получен при изпълнение на операцията checkout;
  • Добавена опция «git checkout —no-overlay — dir», позволяваща при изпълнение на операцията checkout да се приведат съдържанието на каталога dir в съответствие със състоянието на master клона. Например, ако в локалната копие на каталога dir има файл, който липсва в master клона, то по подразбиране при изпълнение на «git checkout master — dir» той ще остане, а при указване на опцията «—no-overlay» ще бъде премахнат;
  • В командата «git diff» е внедрен универсален API за обработка на опции, което позволява унификация на обработката на опциите с други инструменти на git. Например, в «git diff» за всички опции сега са налични и техните антагонисти («—function-context» и «—no-function-context»);
  • Добавена е възможността за филтриране при извеждане на «git log» на прикрепените към комитите разширени етикети («trailer» — допълнителни информационни флагове, като Signed-off-by и Co-authored-by). Възможно е филтриране на етикети както по ключ, така и по стойност, например:
    «git log —pretty=»%(trailers:key=Reviewed-by,valueonly)»;
  • Добавен е нов механизъм за проследяване Trace2, предлагащ по-гъвкав и структуриран формат на извода. Trace2 позволява събиране на телееметрия за извършваните операции и данни за производителността за по-подробен анализ и отстраняване на проблеми (обработчикът се определя от потребителя, никакви данни не се изпращат навън);
  • Направен е по-четим отчет «git bisect», в който сега по-ясно се подчертават проблемните комити и се извежда обобщена статистика за промените за всеки файл (на ниво брой променени редове);
  • Переработена хевристика за определяне на преименувания на директории с цел да се изключи фалшивото поставяне на етикети за преименуване. При наличие на съмнения, подобни директории сега се маркират като конфликтни;
  • Осигурено е извеждане на предупреждение при опит за поставяне на етикет върху друг етикет, което обикновено се прави по грешка и може да доведе до поставяне на етикет не на онзи комит (например, конструкция от вида «git tag -f -m «updated message» my-tag1 my-tag2» ще доведе до създаване на етикет върху стар етикет, докато разработчикът е очаквал, че новият етикет ще бъде поставен върху комита, на който сочи старият етикет);
  • Включена е генерация за репозитории на битови карти (дискова структура «reachability bitmaps»), които съхраняват данни за набори от обекти, достъпни за всеки комит, и позволяват бързо определяне на наличието на основен обект. Указаната структура значително съкращава времето за изпълнение на операции по извличане на данни (git fetch).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster