Verzie Gitu 2.55 s predvolene povolenou podporou Rustu

Bolo ohlásené vydanie distribuovaného systému správy zdrojového kódu Git 2.55. Medzi kľúčové zmeny patria: štandardné zahrnutie zostavení Rust, implementácia pre Linux proces fsmonitor, nová stratégia pre prebaľovanie inkrementálneho indexu MIDX, príkaz „git history fixup“ na opravu commitu, optimalizácia generovania bitmapy dostupnosti objektov, podpora paralelného vykonávania hookov a príkaz „git format-rev“. Git je licencovaný pod licenciou GPLv2+.

V porovnaní s predchádzajúcou verziou obsahuje nová verzia 505 zmien, na ktorých sa podieľalo 100 vývojárov, z ktorých 33 bolo nováčikmi vo vývoji v Gite. Kľúčové nové funkcie (1, 2, 3):

  • Podpora komponentov jazyka Rust je štandardne povolená. Kompilátor rustc
    Rust bol pridaný do závislostí zostavovania. Na zostavovanie bez Rustu môžete použiť príznak „NO_RUST=1“ pri spustení utility make alebo „-Drust=disabled“ pri spustení „meson configure“. Možnosť zakázať zostavovanie pomocou Rustu bude podporovaná až do verzie Git 3.0, ktorá bude zahŕňať Rust ako povinnú závislosť. Rust implementuje vrstvu pre prenositeľnosť medzi konfiguráciami hash SHA-1 a SHA-256, ako aj niektoré interné funkcie, ako je kódovanie a dekódovanie celých čísel s premennou dĺžkou. Očakáva sa, že v budúcnosti budú v Ruste prepísané aj dôležitejšie interné funkcie Gitu.
  • Experimentálny príkaz „git history“, ktorý umožňuje prepísať históriu zmien, bol aktualizovaný o operáciu „git history fixup“ na opravu commitu. Operácia „fixup“ umožňuje presunúť zmeny pridané pomocou príkazu „git add“ do staršieho commitu a automaticky prepísať všetky nasledujúce commity, podobne ako pri spustení príkazu „git commit --fixup=". "a spustením príkazu "git rebase --autosquash ~».
  • Pre platformu Linux Bol implementovaný proces na pozadí fsmonitor, ktorý monitoruje zmeny v súborovom systéme pomocou mechanizmu inotify a umožňuje vyhnúť sa prechodu cez celý pracovný adresár pri vykonávaní príkazov, ako napríklad „git status“. Dá sa povoliť nastavením „core.fsmonitor“.
  • Príkaz „git repack“ bol aktualizovaný o možnosť „--write-midx=incremental“. Táto možnosť implementuje novú stratégiu aktualizácie metadát v inkrementálnom indexe MIDX (index viacerých balení), čím sa eliminuje potreba prebaľovania celého indexu. Inkrementálny index viacerých balení používa vrstvy namiesto jedného veľkého indexu obsahujúceho informácie o distribúcii objektov v balíkových súboroch. Každá vrstva pokrýva špecifický počet balíkových súborov a je uložená v samostatnom bitmapovom súbore. Táto štruktúra umožňuje pridanie údajov o objektoch v nových balíkových súboroch do indexu, čím sa k indexu pripoja nové vrstvy bez nutnosti prebudovania existujúcich vrstiev.

    Príkaz „git repack --write-midx=incremental“ pridá novú vrstvu do inkrementálneho indexu MIDX, ktorá zahŕňa aj nedávno vytvorené súbory packfile. V kombinácii s režimom balenia repozitára „--geometric“ umožňuje nový príkaz kombinovať nové objekty z viacerých súborov packfile do jedného väčšieho súboru packfile a v prípade potreby baliť a zlúčiť viacero susedných vrstiev inkrementálneho indexu MIDX. Táto stratégia umožňuje príkazu „git repack“ prepísať iba horné vrstvy a ponechať staršie, väčšie vrstvy nedotknuté. Taktiež zabraňuje nekontrolovanému rastu reťazca vrstiev tým, že udržiava celkový počet vrstiev úmerný logaritmu celkového počtu objektov.

  • Generovanie bitmap dostupnosti objektov bolo výrazne optimalizované prostredníctvom nového algoritmu prechodu stromu objektov, ktorý eliminuje zbytočnú rekurziu, ukladanie pozícií objektov do vyrovnávacej pamäte, triedenie bitmap pred ich zlúčením pomocou operácie XOR a prepracovanie kódu na vytváranie bitmap typu pseudo-merge. V testovacom repozitári tieto optimalizácie skrátili čas generovania bitmap zo 612 na 294 sekúnd.
  • Paralelné vykonávanie nezávislých hookov je teraz možné v konfiguračných súboroch. Hooky, ktoré ovplyvňujú alebo zohľadňujú zdieľaný stav, ako napríklad tie, ktoré menia poznámky k commitom alebo kontrolujú indexy a pracovný strom, nemožno spúšťať paralelne. Hooky na kontrolu linteru a jednotkové testovanie však možno spúšťať paralelne. Hooky, ktoré umožňujú paralelné vykonávanie, sa konfigurujú pomocou parametra „hook.hook_name.parallel = true“. Počet úloh, ktoré je možné spustiť súčasne, je určený nastavením hooku hook.jobs. .jobs alebo parameter príkazového riadka „-j“.
  • Príkaz „git pack-objects --path-walk“ teraz umožňuje zadať filtre ako napríklad „blob:none“, „blob:limit= ", "strom:0", "objekt:typ= «, «riedke: „a „combine:“. V teste zahodenie objektov blob pri vykonávaní „--path-walk“ znížilo veľkosť vygenerovaného súboru balíka o 16 %.
  • Pridaný príkaz „git format-rev“ na formátovanie revízií a názvov objektov uvedených v zoznamoch commitov alebo nájdených v ľubovoľnom texte (napríklad sa to dá použiť v hookoch na spracovanie poznámok k commitom).

    posledná úprava v gite | git format-rev --stdin-mode=text --format=%an

    Junio ​​​​C Hamano vstavané/commit.c

  • Únik väčšiny riadiacich sekvencií terminálu v informačných správach a prenášaných chybových textoch je štandardne povolený. serverPri prístupe k škodlivému server Takéto escape sekvencie by sa dali použiť na skrytie alebo úpravu výstupu, napríklad pomocou escape sekvencií na pohyb kurzora a vymazanie textu. Podpora escape sekvencií na zvýrazňovanie prvkov bola zachovaná.
  • Príkaz git checkout -m teraz automaticky ukladá konfliktné lokálne zmeny do oblasti stash bez nutnosti okamžitého riešenia konfliktu.
  • Príkaz „git push“ vám teraz umožňuje odoslať vetvu na viacero externých Git serverov jedným príkazom. Napríklad, ak chcete odoslať hlavnú vetvu nielen na hlavný server, ale aj na zrkadlá, môžete vytvoriť skupinu „publish“ z serverov „github“, „gitlab“ a „zrkadlo“:

    git config remotes.publish „zrkadlo github gitlab“
    git push publikovať main

  • Príkaz „git log --graph“ má teraz možnosť „--graph-lane-limit=". » obmedziť počet zvislých pruhov pri vizualizácii vetiev, čo vám umožní ponechať na obrazovke miesto pre údaje o commitoch v repozitároch s veľkým počtom vetiev.

    ...
    * | | | | 619931f561 Zlúčiť vetvu 'dl/posix-unused-warning-clang'
    |\ \ \ \ \
    | * | | | ~ cf48887610 compat/posix.h: zjednodušenie porovnávania GIT_GNUC_PREREQ()
    | * | | | ~ ffd45926dc compat/posix.h: vyčistenie GIT_GNUC_PREREQ() a UNUSED
    |\ \ \ \ \~
    | * | | | ~3f5203eeb4 ls-files: filtrovať pathspec pred lstat

  • Príkazy „git log“ a „git rev-list“ majú teraz možnosť „--max-count-oldest=". , čo vám umožňuje vybrať N najstarších commitov v rozsahu.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster