Predloženej vydanie distribuovaného systému správy zdrojového kódu Git 2.54Git je vysoko produktívny a poskytuje nelineárne vývojové možnosti založené na vetvení a zlučovaní. Na zabezpečenie historickej integrity a odolnosti voči retroaktívnym zmenám používa implicitné hašovanie celej predchádzajúcej histórie v každom commite, ako aj digitálne podpisy jednotlivých značiek a commitov. Kód Gitu distribuovaný pod licenciou GPLv2+.
V porovnaní s predchádzajúcim vydaním obsahuje nová verzia 770 zmien, na ktorých sa podieľalo 137 vývojárov (z ktorých 66 bolo nováčikov vo vývoji v Gite).
-
Príkaz „bol implementovanýhistória gitu„, ktorá poskytuje experimentálne možnosti na prepisovanie histórie zmien, jednoduchšie a bezpečné Je to jednoduchšie ako prebazovanie commitov pomocou príkazu git rebase. Ponúka dve operácie:
- preformulovanie histórie gitu Prepísať správu v zadanom commite bez zmeny pracovného stromu alebo indexu (okrem poznámky, zvyšok zostáva nedotknutý). Napríklad opraviť preklep.
- rozdelenie histórie gitu interaktívne rozdeliť zadaný commit na dva rôzne commity, pričom vybrané časti presunúť z pôvodného commitu do ďalšieho commitu.
Očakáva sa, že v budúcich vydaniach budú pridané ďalšie príkazy: git history fixup na opravu commitu, git history drop na odstránenie commitu, git history reorder na zmenu poradia commitov a git history squash na stlačenie commitov.
-
Bola implementovaná nová metóda na definovanie obslužných programov (háčik) v konfiguračných súboroch. Namiesto umiestňovania skriptov s obslužnými programami do adresára .git/hooks v každom repozitári je teraz možné príkazy na volanie obslužných programov zadať priamo v konfiguračných súboroch. Nastavenia je možné prepojiť s repozitárom alebo zadať v konfiguračných súboroch, ktoré sa vzťahujú na všetky repozitáre (/etc/gitconfig) alebo používateľské repozitáre (~/.gitconfig). Viaceré obslužné programy je možné naviazať na jednu udalosť. Skripty z .git/hooks sa naďalej volajú, ale spúšťajú sa po obslužných programoch z konfiguračných súborov. Ak chcete zobraziť zoznam obslužných programov, použite príkaz git hook list a ak chcete selektívne zakázať volanie obslužných programov, použite nastavenie hook. .povolené = nepravdivé:
[hook "linter"] udalosť = príkaz pred potvrdením = ~/bin/linter --cpp20 [hook "žiadne-úniky"] udalosť = príkaz pred potvrdením = ~/bin/detektor-únikov $ git hook zoznam pred potvrdením globálny linter ~/bin/linter --cpp20 lokálny žiadne-úniky ~/bin/detektor-únikov
- V tíme "údržba gituGeometrická stratégia je štandardne povolená (git config set maintenance.strategy geometric), čo skracuje čas údržby veľkých monorepozitárov. V porovnaní s predtým používanou stratégiou, ktorá používala logiku podobnú príkazu git gc, nová stratégia sa vyhýba prebaľovaniu všetkých objektov a eliminuje príliš náročné operácie na zdroje, ako je zlučovanie všetkých packfile súborov (kde je to možné, zlučovanie sa vykonáva po častiach a bez vymazania odstránených objektov).
- Objektová databáza (ODB) a s ňou spojené API boli migrované na novú architektúru založenú na pripojiteľných backendoch. Táto reštrukturalizácia abstrahuje formát ukladania objektov a umožní implementáciu funkcií, ako sú alternatívne backendy a formáty objektov, napríklad pre efektívnejšie ukladanie veľkých binárnych súborov alebo pre optimalizáciu výkonu rozsiahlych hostingových služieb Git.
- V tíme "štruktúra git repozitára„, ktorá zobrazuje informácie o štruktúre úložiska, poskytuje zobrazenie nielen celkovej veľkosti, ale aj najväčších objektov každého typu, čo vám umožňuje odhadnúť veľkosť bez použitia nástroja tretej strany git-sizer.
Štruktúra repozitára $git... | * Najväčšie objekty | | | * Commity | | | * Maximálna veľkosť [1] | 17.23 KiB | | * Maximálny počet rodičov [2] | 10 | | * Stromy | | | * Maximálna veľkosť [3] | 58.85 KiB | | * Maximálny počet položiek [4] | 1.18 kB | | * Bloby | | | * Maximálna veľkosť [5] | 1019.51 KiB | | * Značky | | | * Maximálna veľkosť [6] | 7.13 KiB |
- V tíme "prehrávanie v gite”, používaný namiesto git rebase na opätovné vytvorenie histórie na serveri bez funkčného stromu, štandardne povolil aktualizácie atomických referencií (namiesto manuálneho vypisovania príkazov update-ref), implementoval možnosť --revert na vrátenie zmien zo série commitov, zabezpečil, že výsledné prázdne commity boli zahodené a umožnil opätovné vytvorenie histórie až po koreňový commit.
- Vgit rev-list„a podobných príkazov bola pridaná možnosť --maximal-only, ktorá zobrazuje iba commity, ktoré nie sú dostupné pre iné commity.
- Do tímu "informácie o repozitári git» pridaná možnosť --keys na zobrazenie všetkých známych kľúčov.
- V tíme "git pridať -pPri navigácii medzi blokmi kódu pomocou klávesov „J“ a „K“ sú teraz označené už schválené a preskočené bloky. Bola pridaná možnosť --no-auto-advance, ktorá zakazuje automatický prechod na ďalší súbor, čo vám umožňuje pred potvrdením zmien znova navštíviť predchádzajúce súbory.
- Webové rozhranie bolo optimalizované.gitweb» pre prácu s mobilnými zariadeniami.
- V tíme "git apply –adresár» zabezpečuje, aby boli cesty k súborom, ako napríklad ./un/../normalized/path, pred použitím normalizované.
- Možnosť pridania vlastných podpríkazov prostredníctvom umiestnenia do súboru git je zdokumentovaná. v adresári so spustiteľnými súbormi.
- Do tímu "git odoslať e-mail» Pridaná podpora pre klientske certifikáty.
- Pre tím "git status» Bolo implementované nastavenie status.compareBranches, ktoré umožňuje určiť vetvy, s ktorými sa bude aktuálna vetva porovnávať:
[status] porovnanieVetví = @{upstream} @{push}
- Vgit rebase» pridaná možnosť --trailer pre zjednodušenie pridávania metadát do všetkých commitov:
git rebase --trailer "Recenzoval: Test "`
- Do tímu "git fast-import» Pridaná možnosť nahradiť podpisy pre commity, ktoré sa po importe stali neplatnými.
- Pridaná podpora pre zhutňovanie viacpackového indexu (MIDX), ktoré kombinuje malé vrstvy indexu MIDX obsahujúce informácie o dostupnosti objektov a súvisiace bitmapy, čím sa znižuje počet nahromadených vrstiev v dlhodobých repozitároch.
- Príkaz git backfill teraz umožňuje zadať revízie (rozsahy commitov) a masky ciest (špecifikácia cesty) na obmedzenie stiahnutých častí histórie zmien:
git backfill main~100..main git backfill — '*.c'
- Pridané alternatívne formy pre volanie príkazu git config list – git config -l a git config --list.
- V názvoch aliasov príkazov uvedených v konfiguračnom súbore sú povolené znaky, ktoré nie sú v kódovaní ASCII:
príkaz [alias „get“] = načítať
- Zobrazenie podpisov, ktorých GPG kľúče už vypršali, ale boli platné v čase podpísania commitu, bolo zmenené. Tieto podpisy sa teraz zobrazujú ako platné s poznámkou o vypršaní platnosti kľúča (predtým boli zvýraznené červenou farbou, čo vyvolávalo dojem, že boli neplatné).
- Pri prístupe k repozitárom cez HTTP sa teraz správne spracováva chybový kód 429 (Príliš veľa požiadaviek). Požiadavky, ktoré zlyhajú s touto chybou, sa už nepovažujú za závažné, ale za dočasné chyby, pri ktorých by sa operácia mala po určitom čase zopakovať. Oneskorenie opakovania sa určuje pomocou možnosti http.retryAfter, počet opakovaní je http.maxRetries a časový limit je http.maxRetryTime.
Zdroj: linux.org.ru
