Vydání distribuovaného systému řízení zdrojů Git 2.22

Předložené vydání distribuovaného systému řízení zdrojů Git 2.22.0. Git je jedním z nejpopulárnějších, spolehlivých a vysoce výkonných systémů pro správu verzí, který poskytuje flexibilní nelineární vývojové nástroje založené na větvení a slučování. Pro zajištění integrity historie a odolnosti vůči retroaktivním změnám se používá implicitní hashování celé předchozí historie v každém commitu a také je možné jednotlivé tagy a commity certifikovat digitálními podpisy vývojářů.

Oproti předchozí verzi obsahovala nová verze 745 změn, připravených za účasti 74 vývojářů, z nichž 18 se podílelo na vývoji poprvé. hlavní inovace:

  • Nový režim revize rebase, který je k dispozici od verze 1.18, "git rebase --rebase-merges" nahrazuje starou volbu "--preserve-merges", která je nyní zastaralá. Operace "git rebase" se používá k nahrazení série odevzdání novým základním odevzdáním, například k přesunutí samostatné větve, která vyvíjí nějakou novou funkci, do aktuálního stavu hlavní větve, která zahrnuje opravy přidané po větvi. :

    o - o - o (můj rys)

    /

    o - o - o - o - o (mistr)

    o - o - o (můj rys)

    /

    o - o - o - o - o (mistr)

    Pro zachování struktury větve v migrované větvi bylo možné dříve použít volbu „--preserve-merges“, která při spuštění v interaktivním režimu (git rebase -i --preserve-merges) umožňovala editaci historie odevzdání, ale nezaručilo úplné zachování struktury úložiště. Nový režim „--rebase-merges“ vám umožňuje zachovat strukturu změn v migrované větvi a zároveň poskytuje celou řadu interaktivních operací, včetně mazání, přeskupování a přejmenování odevzdání.

    Například "--rebase-merges" umožňuje znovu nahrát odevzdání ze samostatné větve do novější hlavní větve při zachování struktury větve v migrované větvi a provést některé změny v poznámkách odevzdání za chodu.

  • Přidána podpora pro vytvoření nové větve na základě výsledku určení slučovací báze dvou dalších větví (merge base, vazba na společného předka) pomocí konstrukcí „git branch new A...B“ a „git checkout -b new A...B“, ve kterém „A ...B“ zahrnuje definování slučovací báze mezi dvěma určenými odevzdáními, podobně jako „git checkout A...B“ posouvá HEAD na základní odevzdání a „rozdíl A. ..B" ukazuje změny mezi odevzdáním "B" a stejným jako odevzdáním "A" "Předkem.

    Například při práci na samostatné větvi my-feature lze tuto funkci použít, když chcete začít z jiné větve, například ze stejného místa v hlavní větvi, ze které byla větev my-feature vyzvednuta. Dříve to vyžadovalo ruční prozkoumání protokolu změn, což bylo nepohodlné, pokud jste měli velkou historii změn, a poté spustit „git merge-base master my-feature“ pro výpočet hash slučovací báze mezi hlavní a my-feature větvemi. a vytvoření nové větve vzhledem ke společnému předku "git branch my-other-feature hash." V Gitu 2.22 můžete použít syntaxi "git branch my-other-feature A...B" k vytvoření větve vzhledem ke slučovací bázi dvou dalších větví;

  • Přidána možnost "git branch --show-current" pro zobrazení názvu větve získaného během operace pokladny;
  • Přidána možnost „git checkout —no-overlay — dir“, která umožňuje při provádění operace checkout přenést obsah adresáře dir do podoby, která plně odpovídá stavu hlavní větve. Pokud je například v místní kopii adresáře dir soubor, který není v hlavní větvi, pak bude ve výchozím nastavení při provádění „git checkout master - dir“ ponechán, a pokud „--no-overlay ” je specifikována, bude smazána;
  • Příkaz "git diff" používá univerzální API pro analýzu voleb, což umožňuje sjednotit práci s volbami s jinými nástroji git. Například v „git diff“ mají nyní všechny možnosti své antagonisty („--function-context“ a „--no-function-context“);
  • Přidána možnost filtrovat rozšířené značky připojené k odevzdáním ve výstupu „git log“ („upoutávka“ – další informační příznaky, jako je Signed-off-by a Co-authored-by). Štítky je možné filtrovat podle klíče i hodnoty, například:
    "git log --pretty="%(trailers:key=Reviewed by,valueonly)";

  • Byl přidán nový sledovací modul Trace2, který nabízí flexibilnější a strukturovanější výstupní formát. Trace2 umožňuje shromažďovat telemetrii o provedených operacích a výkonová data pro podrobnější analýzu a ladění (handler je přiřazen uživatelem, žádná data nejsou odesílána externě);
  • Přehlednější byl report „git bisect“, ve kterém jsou nyní jasněji zvýrazněny problematické commity a jsou zobrazeny souhrnné statistiky změn pro každý soubor (na úrovni počtu změněných řádků);
  • Heuristika pro určování přejmenování adresářů byla přepracována, aby se eliminovala falešná instalace přejmenovacích štítků. V případě pochybností jsou tyto adresáře nyní označeny jako konfliktní;
  • Při pokusu o instalaci značky na jinou značku se zobrazí varování, což se obvykle děje omylem a může to vést k nastavení značky na nesprávné potvrzení (například konstrukce jako „git tag -f -m „aktualizovaná zpráva“ my-tag1 my-tag2″ bude mít za následek vytvoření značky na staré značce, zatímco vývojář očekával, že nová značka bude nainstalována v potvrzení, na které ukazuje stará značka);
  • Generování je povoleno pro úložiště bitmap (struktura „bitmapy s dosahem na základě disku“), která ukládají data o sadách objektů dostupných pro každé potvrzení a umožňují rychle určit přítomnost základního objektu. Tato struktura výrazně zkracuje dobu provádění operací načítání dat (git fetch).

Zdroj: opennet.ru

Přidat komentář