Vydání distribuovaného systému správy zdrojových kódů Git 2.31

Byla vydána verze distribuovaného systému správy verzí Git 2.31. Git je jedním z nejpopulárnějších, nejspolehlivějších a vysoce výkonných systémů správy verzí, který poskytuje flexibilní nástroje pro nelineární vývoj založené na větvení a slučování větví. Aby byla zajištěna integrita historie a odolnost vůči zpětným změnám, používá implicitní hashování celé předchozí historie v každém commitu. Také je možné ověřit digitálními podpisy jednotlivých tagů a commitů od vývojářů.

Ve srovnání s předchozí verzí obsahuje nová verze 679 změn, které připravilo 85 vývojářů, z nichž 23 se zúčastnilo vývoje poprvé. Hlavní novinky:

  • Byla přidána příkazová sekce „git maintenance“, která umožňuje provádět pravidelné úkoly na systémech, jež nepodporují cron. Například pomocí nového příkazu lze uspořádat pravidelné spouštění procesu balení repozitáře, aniž byste museli čekat na dokončení uzamčení repozitáře při automatickém spuštění balení během provádění různých příkazů. Příkaz „git maintenance“ umožňuje provádět optimalizace a údržbu optimální struktury repozitáře na pozadí, aniž by došlo k blokování interaktivní relace – jednou za hodinu se provádí práce na předběžném načítání čerstvých objektů z vzdáleného repozitáře a aktualizaci souboru s grafem commitů, zatímco každou noc se spouští proces balení repozitáře.
  • Byla přidána podpora pro uchovávání na disku reverzního indexu (revindex) pro pack-soubory. Připomínáme, že Git ukládá všechna data ve formě objektů, které jsou umístěny v jednotlivých souborech. Pro zvýšení efektivity práce s repozitářem se objekty dále umisťují do pack-souborů, v nichž jsou informace prezentovány ve formě proudu objektů, které následují za sebou (podobný formát se používá při přenosu objektů příkazy git fetch a git push). Pro každý pack-soubor se vytváří indexový soubor (.idx), který umožňuje velmi rychle určit offset v pack-souboru podle identifikátoru objektu, kde se daný objekt nachází. Navržený reversní index (.rev) v Git 2.31 má za cíl optimalizovat proces určování identifikátoru objektu podle informací o umístění objektu v pack-souboru.

    Dříve se tato transformace prováděla za běhu při analýze pack souboru a uchovávala se pouze v paměti, což neumožňovalo opětovné použití takových indexů a nutilo generovat index každýkrát. Operace vytváření indexu spočívá ve složení pole z párů „objekt-pozice“ a jeho seřazení podle pozice, což může trvat hodně času pro velké pack soubory.

    Například operace výstupu obsahu objektů, která využívá přímý index, probíhala 62krát rychleji než operace zobrazení velikosti objektů, pro kterou data o propojení pozice s objektem nebyla indexována. Po použití opačného indexu začaly být dané operace naprosto srovnatelné. Opačné indexy také umožňují urychlit operace odesílání objektů při provádění příkazů fetch a push díky přímému přenosu již připravených dat z disku. Opačné indexy se ve výchozím nastavení nevytvářejí, pro jejich generaci je potřeba aktivovat nastavení „git config pack.writeReverseIndex true“, následované zabalením repozitáře příkazem „git repack -Ad“.

  • Byly přidány optimalizace výkonu založené na výskytu ve formátu souboru commit-graph, který se používá pro optimalizaci přístupu k informacím o commitech, nová data o čísle generace commitu, která mohou být použita pro urychlení dalších operací s commity.
  • Byly rozšířeny možnosti přepsání názvu výchozí větve, která se používá ve výchozím nastavení v nových repozitářích (nastavení init.defaultBranch). Při přístupu k externím repozitářům se git pokouší extrahovat větev, na kterou ukazuje HEAD, tj. pokud externí server repozitář používá výchozí větev „main“, pak se operace „git clone“ pokusí lokálně extrahovat „main“. V Git 2.31 je podpora takového extrakce nyní realizována i pro prázdné repozitáře. Například při lokálním klonování nového repozitáře před přidáním prvních patchů nyní lokální kopie bude obsahovat nastavené externí serveru jméno výchozí větve.
  • Do příkazu „git rev-list“ byla přidána volba „—disk-usage“, která umožňuje zobrazit shrnutí velikosti objektů.
  • V očekávání nadcházející změny backendu pro provádění sloučení bylo výrazně optimalizováno určování přejmenování.
  • Podpora zastaralé knihovny regulárních výrazů PCRE1 byla ukončena.
  • Byla přidána možnost vynutit zákaz používání zkrácených odkazů, který funguje nezávisle na algoritmu hashování. Zákaz se aktivuje nastavením parametru core.abbrev na hodnotu „no“.
  • Do příkazu „git rev-parse“ byla přidána volba „—path-format=(absolute|relative)“ pro explicitní určení výstupu relativních nebo absolutních cest.
  • Ve skriptech pro automatické doplňování vstupu v Bash bylo usnadněno přidávání pravidel doplňování pro vlastní podpříkazy „git“.
  • Do příkazu „git bundle“ byla přidána volba „—stdin“ pro čtení odkazů ze standardního vstupu.
  • Do příkazu „git log“ byla přidána nová volba „—diff-merges=“.
  • Do příkazu „git ls-files“ byla přidána volba „—deduplicatecan“ pro odstranění duplicit při výstupu.
  • Byly přidány nové masky pro vyloučení rozsahu commitů — „^!“ a „^-“.
  • Do příkazu „git range-diff“ byly přidány volby „—left-only“ a „—right-only“ pro zobrazení pouze jedné strany porovnávaného rozsahu.
  • Do příkazů „git diff“ a „git log“ byly přidány volby „—skip-to=“ a „—rotate-to=“ pro přeskočení nebo přesun na konec počátečních cest.
  • Do příkazu „git difftool“ byla přidána volba „—skip-to=“ pro obnovení přerušené relace z libovolné cesty.
  • Kodex chování (Code-of-conduct), který definuje základní principy řešení konfliktů mezi vývojáři, byl aktualizován na verzi 2.0 (dříve používaná verze 1.4).

    Zdroj: opennet.ru
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster