Vydanie distribuovaného zdrojového riadiaceho systému Git 2.31

Distribuovaný zdrojový riadiaci systém Git 2.31 je teraz k dispozícii. Git je jedným z najpopulárnejších, najspoľahlivejších a najvýkonnejších systémov na správu verzií, ktorý poskytuje flexibilné nelineárne vývojové nástroje založené na vetvení a zlučovaní. Na zabezpečenie integrity histórie a odolnosti voči retroaktívnym zmenám sa v každom commite používa implicitné hashovanie celej predchádzajúcej histórie, je tiež možné certifikovať jednotlivé tagy a commity digitálnymi podpismi vývojárov.

Oproti predchádzajúcemu vydaniu obsahovala nová verzia 679 zmien, pripravených za účasti 85 vývojárov, z ktorých 23 sa podieľalo na vývoji po prvýkrát. Hlavné inovácie:

  • Pridaný príkaz „git maintenance“, ktorý vám umožňuje vykonávať pravidelnú prácu na systémoch, ktoré nepodporujú cron. Napríklad pomocou nového príkazu môžete zariadiť, aby sa proces balenia úložiska spúšťal pravidelne, takže nemusíte čakať, kým sa úložisko zamkne, keď sa automaticky vykoná balenie pri spustení rôznych príkazov. Príkaz „git maintenance“ vám umožňuje vykonávať optimalizácie a operácie na udržanie optimálnej štruktúry úložiska na pozadí bez blokovania interaktívnej relácie – raz za hodinu sa proaktívne stiahne nové objekty zo vzdialeného úložiska a aktualizuje sa súbor s grafom odovzdania a proces balenia úložiska začína každú noc .
  • Pridaná podpora pre udržiavanie reverzného indexu (revindex) na disku pre súbory balíkov. Pripomeňme, že Git ukladá všetky údaje vo forme objektov, ktoré sa nachádzajú v samostatných súboroch. Pre zvýšenie efektivity práce s repozitárom sa objekty dodatočne umiestňujú do pack súborov, v ktorých sú informácie prezentované vo forme prúdu objektov za sebou (podobný formát sa používa pri prenose objektov pomocou git fetch a git push príkazy). Pre každý pack súbor je vytvorený indexový súbor (.idx), ktorý umožňuje pomocou identifikátora objektu veľmi rýchlo určiť offset v pack súbore, na ktorom je daný objekt uložený. Reverzný index (.rev) zavedený v Git 2.31 je zameraný na optimalizáciu procesu určovania identifikátora objektu z informácií o umiestnení objektu v súbore balíka.

    Predtým sa takáto konverzia vykonávala za behu pri analýze súboru balíka a ukladala sa iba do pamäte, čo neumožňovalo opätovné použitie podobných indexov a nútilo sa index generovať zakaždým. Operácia vytvárania indexu spočíva v skonštruovaní poľa párov objekt-pozícia a jeho triedení podľa pozície, čo môže pri veľkých súboroch balíkov trvať dlho.

    Napríklad operácia na zobrazenie obsahu objektov, ktorá používa priamy index, bola 62-krát rýchlejšia ako operácia na zobrazenie veľkosti objektov, pre ktorú neboli indexované údaje o polohe k objektu. Po použití reverzného indexu začali tieto operácie trvať približne rovnaký čas. Spätné indexy vám tiež umožňujú urýchliť operácie odosielania objektov pri vykonávaní príkazov fetch a push priamym prenosom hotových údajov z disku. V predvolenom nastavení sa reverzné indexy nevytvárajú, na ich generovanie je potrebné povoliť nastavenie „git config pack.writeReverseIndex true“ a potom zbaliť úložisko príkazom „git repack -Ad“.

  • Pridané optimalizácie výkonu založené na vzhľade vo formáte súboru odovzdania-graf, používané na optimalizáciu prístupu k informáciám o odovzdaniach, nové údaje o čísle generovania odovzdania, ktoré možno použiť na urýchlenie ďalších operácií s odovzdaniami.
  • Pridané možnosti pre predefinovanie názvu hlavnej vetvy, ktorá sa štandardne používa v nových úložiskách (nastavenie init.defaultBranch). Pri prístupe k externým úložiskám sa git pokúša skontrolovať vetvu, na ktorú ukazuje HEAD, t.j. ak externý server štandardne používa vetvu "main", potom sa operácia "git clone" pokúsi vyhľadať "main" lokálne. Git 2.31 teraz podporuje tento typ pokladne pre prázdne úložiská. Napríklad pri lokálnom klonovaní nového úložiska pred pridaním prvých záplat do neho bude teraz lokálna kópia obsahovať predvolený upstream názov nastavený na externom serveri.
  • Do príkazu "git rev-list" bola pridaná možnosť --disk-usage, ktorá poskytuje súhrn veľkosti objektov.
  • V očakávaní nadchádzajúcej zmeny backendu zlučovania bola detekcia premenovania výrazne optimalizovaná.
  • Podpora pre starú knižnicu regulárnych výrazov PCRE1 bola ukončená.
  • Je možné násilne zakázať používanie skrátených odkazov bez ohľadu na algoritmus hashovania. Zákaz sa aktivuje priradením hodnoty „no“ parametru core.abbrev.
  • Do príkazu "git rev-parse" bola pridaná možnosť "--path-format=(absolútne|relatívne)", ktorá explicitne špecifikuje, či sa majú vydávať relatívne alebo absolútne cesty.
  • Bash dokončovacie skripty uľahčujú pridávanie pravidiel dokončovania pre vaše vlastné podpríkazy „git“.
  • Do príkazu "git bundle" bola pridaná možnosť --stdin na čítanie referencií zo štandardného vstupného toku.
  • Do príkazu "git log" bola pridaná nová možnosť: "--diff-merges=" "
  • Pridaná možnosť „--deduplicatecan“ do príkazu „git ls-files“ na odstránenie duplicitného výstupu.
  • Pridané nové masky na vylúčenie rozsahu odovzdaní - " ^!" a " ^- "
  • Do príkazu „git range-diff“ boli pridané možnosti „--left-only“ a „--right-only“, aby sa zobrazila iba jedna strana porovnávaného rozsahu.
  • Pridané možnosti --skip-to= do príkazov "git diff" a "git log". " a "—rotate-to= » na preskočenie alebo presun na koniec začiatočných ciest.
  • Pridaná možnosť "--skip-to=" do príkazu "git difftool". » na obnovenie prerušenej relácie z náhodnej cesty.
  • Kódex správania, ktorý definuje základné princípy riešenia konfliktných situácií medzi vývojármi, bol aktualizovaný na verziu 2.0 (predtým sa používala verzia 1.4).

    Zdroj: opennet.ru

Pridať komentár