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).