Předložené vydání distribuovaného systému správy zdrojového kódu Git 2.54Git je vysoce produktivní a poskytuje nelineární vývojové funkce založené na větvení a slučování. Pro zajištění historické integrity a odolnosti vůči retroaktivním změnám používá implicitní hashování celé předchozí historie v každém commitu a také digitální podpisy jednotlivých tagů a commitů. Kód Gitu distribuovány pod licencí GPLv2+.
Oproti předchozí verzi obsahuje nová verze 770 změn, na kterých se podílelo 137 vývojářů (z nichž 66 bylo ve vývoji v Gitu nových).
-
Příkaz " byl implementovánhistorie gitu", která poskytuje experimentální možnosti pro přepisování historie změn, jednodušší a v bezpečí Je to jednodušší než rebasing commitů pomocí příkazu git rebase. Nabízí dvě operace:
- přeformulování historie gitu Přepsat zprávu v zadaném commitu beze změny pracovního stromu nebo indexu (kromě poznámky, zbytek zůstává nedotčen). Například opravit překlep.
- rozdělení historie gitu interaktivně rozdělit zadaný commit na dva různé commity a přesunout vybrané části z původního commitu do dalšího commitu.
Očekává se, že v budoucích verzích budou přidány další příkazy: git history fixup pro opravu commitu, git history drop pro odstranění commitu, git history reorder pro změnu pořadí commitu a git history squash pro stlačení commitu.
-
Byla implementována nová metoda pro definování obslužných rutin (háček) v konfiguračních souborech. Místo umisťování skriptů s obslužnými rutinami do adresáře .git/hooks v každém repozitáři lze nyní příkazy pro volání obslužných rutin zadávat přímo v konfiguračních souborech. Nastavení lze propojit s repozitářem nebo zadat v konfiguračních souborech, které platí pro všechny repozitáře (/etc/gitconfig) nebo uživatelské repozitáře (~/.gitconfig). K jedné události lze vázat více obslužných rutin. Skripty z .git/hooks se budou i nadále volat, ale budou spuštěny až po obslužných rutinách z konfiguračních souborů. Seznam obslužných rutin zobrazíte pomocí příkazu git hook list a volání obslužných rutin selektivně zakážete pomocí nastavení hook. .povoleno = nepravda:
[hook "linter"] event = pre-commit command = ~/bin/linter --cpp20 [hook "no-leaks"] event = pre-commit command = ~/bin/leak-detector $ git hook list pre-commit globální linter ~/bin/linter --cpp20 lokální no-leaks ~/bin/leak-detector
- V týmu "údržba gituGeometrická strategie je ve výchozím nastavení povolena (git config set maintenance.strategy geometric), což zkracuje dobu údržby velkých monorepozitářů. Ve srovnání s dříve používanou strategií, která používala logiku podobnou příkazu git gc, se nová strategie vyhýbá přebalování všech objektů a eliminuje příliš náročné operace na zdroje, jako je slučování všech packfilů (kde je to možné, slučování se provádí po částech a bez čištění smazaných objektů).
- Objektová databáze (ODB) a s ní spojená API byla migrována na novou architekturu založenou na plug-in backendech. Tato restrukturalizace abstrahuje formát ukládání objektů a umožní implementaci funkcí, jako jsou alternativní backendy a formáty objektů, například pro efektivnější ukládání velkých binárních souborů nebo pro optimalizaci výkonu rozsáhlých hostingových služeb Git.
- V týmu "struktura repozitáře git", která zobrazuje informace o struktuře repozitáře, poskytuje zobrazení nejen celkové velikosti, ale také největších objektů každého typu, což umožňuje odhadnout velikost bez použití utility třetí strany git-sizer.
Struktura repozitáře $git... | * Největší objekty | | | * Commity | | | * Maximální velikost [1] | 17.23 KiB | | * Maximální počet rodičů [2] | 10 | | * Stromy | | | * Maximální velikost [3] | 58.85 KiB | | * Maximální počet položek [4] | 1.18 kB | | * Bloby | | | * Maximální velikost [5] | 1019.51 KiB | | * Tagy | | | * Maximální velikost [6] | 7.13 KiB |
- V týmu "přehrání v gitu“, používaný místo git rebase k opětovnému vytvoření historie na serveru bez funkčního stromu, ve výchozím nastavení povoleny atomické aktualizace referencí (místo ručního vypisování příkazů update-ref), implementována možnost --revert pro vrácení změn ze série commitů, zajištěno, že výsledné prázdné commity budou zahozeny, a umožněno znovu vytvořit historii až ke kořenovému commitu.
- V "git rev-list" a podobných příkazů byla přidána volba --maximal-only, která zobrazuje pouze commity, které nejsou dostupné jiným commitům.
- Do týmu "informace o repozitáři Git» přidána volba --keys pro zobrazení seznamu všech známých klíčů.
- V týmu "git přidat -pPři navigaci mezi bloky kódu pomocí kláves „J“ a „K“ jsou nyní označeny již schválené a přeskočené bloky. Byla přidána možnost --no-auto-advance, která zakazuje automatický přechod na další soubor, což vám umožňuje před potvrzením změn zobrazit předchozí soubory.
- Webové rozhraní bylo optimalizováno.gitweb» pro práci s mobilními zařízeními.
- V týmu "git apply –adresář» zajišťuje, že cesty k souborům, jako například ./un/../normalized/path, jsou před použitím normalizovány.
- Možnost přidat vlastní dílčí příkazy pomocí umístění do souboru git je zdokumentována. v adresáři se spustitelnými soubory.
- Do týmu "git odeslat e-mail» Přidána podpora pro klientské certifikáty.
- Pro tým"git status» Bylo implementováno nastavení status.compareBranches, které umožňuje specifikovat větve, se kterými bude aktuální větev porovnávána:
[status] porovnáníVětí = @{upstream} @{push}
- V "git rebase» přidána volba --trailer pro zjednodušení přidávání metadat do všech commitů:
git rebase --trailer "Recenzováno uživatelem: Test" "`
- Do týmu "git fast-import» Přidána možnost nahradit podpisy u commitů, které se po importu staly neplatnými.
- Přidána podpora pro zhutňování indexů MIDX (multi-pack index), které kombinuje malé vrstvy indexu MIDX obsahující informace o dostupnosti objektů a související bitmapy, čímž se snižuje počet nahromaděných vrstev v dlouhodobých repozitářích.
- Příkaz git backfill nyní umožňuje zadat revize (rozsahy commitů) a masky cest (specifikace cesty) pro omezení stažených částí historie změn:
git backfill main~100..main git backfill — '*.c'
- Přidány alternativní formuláře pro volání příkazu git config list – git config -l a git config --list.
- V názvech aliasů příkazů uvedených v konfiguračním souboru jsou povoleny znaky jiné než ASCII:
příkaz [alias „get“] = načíst
- Zobrazení podpisů, jejichž GPG klíče sice vypršely, ale byly platné v době podepsání commitu, bylo změněno. Tyto podpisy se nyní zobrazují jako platné s poznámkou o vypršení platnosti klíče (dříve byly zvýrazněny červeně, což vyvolávalo dojem, že jsou neplatné).
- Při přístupu k repozitářům přes HTTP je nyní správně zpracováván chybový kód 429 (Příliš mnoho požadavků). Požadavky, které selžou s touto chybou, již nejsou považovány za závažné, ale za dočasné chyby, u kterých by se operace měla po určité době opakovat. Zpoždění opakování se zadává pomocí volby http.retryAfter, počet opakování je http.maxRetries a časový limit je http.maxRetryTime.
Zdroj: linux.org.ru
