Az elosztott forrásvezérlő rendszer Git 2.31 kiadása

A Git 2.31 elosztott forrásvezérlő rendszer már elérhető. A Git az egyik legnépszerűbb, legmegbízhatóbb és nagy teljesítményű verziókezelő rendszer, amely rugalmas, elágazáson és összevonáson alapuló, nem lineáris fejlesztői eszközöket biztosít. Az előzmények sértetlenségének és a visszamenőleges változtatásokkal szembeni ellenállás biztosítására minden commit során a teljes korábbi előzmény implicit kivonatolása történik, valamint lehetőség van az egyes címkék és commitok hitelesítésére is a fejlesztők digitális aláírásával.

Az új verzió az előző kiadáshoz képest 679 változtatást tartalmazott, 85 fejlesztő részvételével készült, ebből 23 először vett részt a fejlesztésben. Főbb újítások:

  • Hozzáadtuk a „git karbantartás” parancsot, amely lehetővé teszi, hogy időszakos munkát végezzen olyan rendszereken, amelyek nem támogatják a cront. Például egy új paranccsal beállíthatja, hogy a lerakatcsomagolási folyamat időszakonként fusson, így nem kell megvárnia a lerakat zárolását, amikor a csomagolás automatikusan végrehajtódik különböző parancsok futtatása közben. A „git karbantartás” parancs lehetővé teszi, hogy optimalizálásokat és műveleteket hajtson végre a lerakat optimális szerkezetének fenntartása érdekében a háttérben anélkül, hogy blokkolná az interaktív munkamenetet – óránként egyszer megtörténik a friss objektumok proaktív letöltése a távoli tárolóból és a fájlt a véglegesítési grafikonnal, és minden este elindul a lerakat csomagolásának folyamata.
  • Támogatás hozzáadva a fordított index (revindex) karbantartásához a lemezen a csomagfájlokhoz. Emlékezzünk vissza, hogy a Git minden adatot objektumok formájában tárol, amelyek külön fájlokban találhatók. A tárhellyel való munka hatékonyságának növelése érdekében az objektumokat csomagfájlokba helyezik, amelyekben az információkat egymás után következő objektumok folyamaként jelenítik meg (hasonló formátumot használnak az objektumok git fetch és git push segítségével történő átvitelekor parancsok). Minden csomagfájlhoz létrejön egy indexfájl (.idx), amely lehetővé teszi, hogy az objektumazonosító segítségével nagyon gyorsan meghatározzuk a csomagfájlban azt az eltolást, amelynél az adott objektum tárolva van. A Git 2.31-ben bevezetett fordított index (.rev) célja, hogy optimalizálja az objektumazonosító meghatározásának folyamatát a csomagfájlban lévő objektumok elhelyezésére vonatkozó információk alapján.

    Korábban az ilyen átalakítást menet közben, a csomagfájl elemzése közben hajtották végre, és csak a memóriában tárolták, ami nem tette lehetővé a hasonló indexek újrafelhasználását, és az index minden egyes alkalommal történő létrehozására kényszerült. Az index felépítésének művelete az objektum-pozíció párok tömbjének összeállításában és pozíciók szerinti rendezésében rejlik, ami nagy csomagfájlok esetén sokáig tarthat.

    Például az objektumok tartalmának megjelenítésére szolgáló művelet, amely közvetlen indexet használ, 62-szer gyorsabb volt, mint az objektumok méretének megjelenítésére szolgáló művelet, amelynél a pozíció-objektum adatok nem voltak indexelve. A fordított index használata után ezek a műveletek körülbelül ugyanannyi időt vettek igénybe. A fordított indexek lehetővé teszik az objektumküldési műveletek felgyorsítását a lekérési és leküldési parancsok végrehajtásakor a kész adatok lemezről történő közvetlen átvitelével. Alapértelmezés szerint a fordított indexek nem jönnek létre; létrehozásukhoz engedélyeznie kell a „git config pack.writeReverseIndex true” beállítást, majd be kell csomagolnia a tárat a „git repack -Ad” paranccsal.

  • Hozzáadott teljesítményoptimalizálások a commit-graph fájlformátumban való megjelenés alapján, a véglegesítésekkel kapcsolatos információkhoz való hozzáférés optimalizálására szolgálnak, új adatok a commit generációs számról, amelyek segítségével felgyorsíthatók a további műveletek véglegesítésekkel.
  • Hozzáadott beállítások az új lerakatokban alapértelmezés szerint használt fő ág nevének újradefiniálásához (init.defaultBranch beállítás). Külső adattárak elérésekor a git megpróbálja megnézni a HEAD által mutatott ágat, pl. ha a külső szerver alapértelmezés szerint a "main" ágat használja, akkor a "git clone" művelet megpróbálja kijelentkezni a "main" helyben. A Git 2.31 mostantól támogatja az ilyen típusú fizetést az üres adattárak esetében. Például egy új tárhely helyi klónozása előtt az első javítások hozzáadása előtt, a helyi másolat mostantól a külső szerveren beállított alapértelmezett upstream nevet fogja tartalmazni.
  • Hozzáadott egy --disk-usage paramétert a "git rev-list" parancshoz, hogy összefoglalja az objektumok méretét.
  • Az összevonási háttérrendszer közelgő változására való tekintettel az átnevezésészlelést jelentősen optimalizálták.
  • A korábbi PCRE1 reguláris kifejezés-könyvtár támogatása megszűnt.
  • Lehetőség van a rövidített hivatkozások használatának erőszakos tiltására, függetlenül a hash algoritmustól. A tiltás engedélyezhető, ha a core.abbrev paraméterhez a „no” értéket rendeljük.
  • A "--path-format=(absolute|relative)" opció hozzáadva a "git rev-parse" parancshoz, amely kifejezetten meghatározza, hogy relatív vagy abszolút elérési utak kerüljenek-e ki.
  • A Bash befejező szkriptek megkönnyítik a befejezési szabályok hozzáadását saját „git” alparancsaihoz.
  • Hozzáadott egy --stdin paramétert a "git bundle" parancshoz, amely a szabványos bemeneti adatfolyam hivatkozásait olvassa be.
  • Egy új opció került a "git log" parancshoz: "--diff-merges=" "
  • A "--deduplicatecan" opció hozzáadva a "git ls-files" parancshoz, hogy kiküszöbölje a duplikált kimenetet.
  • Új maszkok hozzáadva egy sor véglegesítés kizárásához - " ^!” és " ^- "
  • "--left-only" és "--right-only" opciók hozzáadva a "git range-diff" parancshoz, hogy az összehasonlított tartománynak csak az egyik oldala jelenjen meg.
  • A --skip-to= opciók hozzáadva a "git diff" és a "git log" parancsokhoz " és "-forgatás-to= » a kiindulási útvonalak kihagyásához vagy a végére lépéshez.
  • "--skip-to=" opció hozzáadva a "git difftool" parancshoz » megszakított munkamenet folytatása véletlenszerű útvonalról.
  • A fejlesztők közötti konfliktushelyzetek feloldásának alapelveit meghatározó Magatartási Kódex a 2.0-s verzióra frissült (korábban az 1.4-es verziót használták).

    Forrás: opennet.ru

Hozzászólás