Három hónap fejlesztés után megjelent a Git 2.52, egy elosztott forráskód-kezelő rendszer. A Git nagy teljesítménnyel büszkélkedhet, és elágazáson és egyesítésen alapuló nemlineáris fejlesztési képességeket kínál. A történeti integritás és a visszamenőleges változtatásokkal szembeni ellenálló képesség biztosítása érdekében minden egyes commitban implicit hashelést használ a teljes korábbi előzményekre, valamint az egyes címkék és commitok digitális aláírásait. A Git a GPLv2+ licenc alatt érhető el.
Az előző kiadáshoz képest az új verzió 637 változtatást tartalmaz, melyeket 94 fejlesztő tett közzé (közülük 33 új volt a Git fejlesztésében). Főbb új funkciók (1, 2, 3):
- Hozzáadva a "git last-modified" parancs, amely megjeleníti az adott revízióban található fájlok listáját, valamint az egyes fájlokat utoljára módosító commitokat. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
- Hozzáadva a "git repo" parancs az információk adattárból való lekérésével kapcsolatos műveletek végrehajtásához. Két alparancs, a "git repo info" és a "git repo structure" lett megadva, amelyek információkat jelenítenek meg az adattár beállításairól és az adattár szerkezetéről (például megtudhatja a adattárban található referenciák és objektumok számát). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Adattár szerkezete | Érték | | ——————— | —— | | * Referenciák | | | * Darabszám | 1983 | | * Ágak | 4 | | * Címkék | 1125 | | * Távoli eszközök | 854 | | * Egyéb | 0 | | | | | * Elérhető objektumok | | | * Darabszám | 518955 | | * Commitok | 77469 | | * Fák | 188865 | | * Blobok | 251631 | | * Címkék | 990 |
- A git refs parancs három alkanccsal frissült, amelyek egyesítik a referenciákon végzett eltérő és átfedő alacsony szintű műveleteket (git for-each-ref, git show-ref, git update-ref és git pack-refs):
- „git refs optimize” — a referenciatároló backend optimalizálása (hasonlóan a „git pack-refs”-hez).
- „git refs list” – kiírja az összes hivatkozás listáját (hasonlóan a „git for-each-ref” vagy a „git show-ref” parancshoz).
- A „git refs exists” parancs ellenőrzi a hivatkozás létezését (a „git show-ref --exists” parancshoz hasonlóan).
- A commit előzmények exportálásának és importálásának formátuma kibővült, hogy támogassa a kriptográfiai aláírásokat mind az SHA-1, mind az SHA-256 alapú objektumazonosítók használatával. A "git fast-import" parancs mostantól támogatja az aláírt címkék feldolgozását, hasonlóan az aláírt commitokhoz. A "--signed-commits=<mód>" és a "--signed-tags=<mód>" opciók hozzáadódtak az aláírt commitok és címkék feldolgozásának vezérléséhez az importálás során (a mód lehet verbatim, warn-verbatim, warn-stri, strip vagy abort).
- A „git maintenance” parancs mostantól egy új „geometrikus” stratégiát támogat („git config set maintenance.strategy geometric”), amely csökkenti a karbantartási időt a nagyméretű monorepozitóriumok esetében. A korábban elérhető, a „git gc”-hez hasonló logikát használó stratégiához képest az új stratégia elkerüli az összes objektum újracsomagolását, és kiküszöböli az olyan erőforrás-igényes műveleteket, mint az összes csomagfájl egyesítése (ahol lehetséges, az egyesítés részekben és a törölt objektumok törlése nélkül történik).
- Hozzáadtuk a „git sparse-checkout clean” parancsot, hogy megkönnyítsük a munkakönyvtár állapotának visszaállítását azáltal, hogy eltávolítjuk azokat a fájlokat, amelyek nem felelnek meg az új sparse-checkout definíciónak, és amelyeknek a jelenlegi sparse-checkout beállítások szerint nem kellene szerepelniük a helyi másolatban.
- A kódbázis bonyolultságának csökkentése és a karbantartás egyszerűsítése érdekében refaktorálást végeztek a the_repository globális változó használatának csökkentése érdekében.
- A Bloom-szűrők használata – egy valószínűségi keretrendszer a halmaztagság ellenőrzésére, amely lehetővé teszi a hiányzó elemek téves pozitív eredményét, de megakadályozza a meglévő elemek kihagyását – kibővült. A Bloom-szűrőket mostantól a változástörténetben való keresés felgyorsítására használják, amikor helyettesítő karaktereket adnak meg a fájlútvonalakban, például: "foo/bar/*/baz".
- A "git describe" parancs teljesítménye akár 30%-kal is megnőtt a prioritási sor használatának köszönhetően. Felgyorsultak a hivatkozások átnevezési műveletei a "git remote rename" parancsban. Kibővült az indexek használata a "git ls-files" fájlokban. A "git log -L" parancs jelentősen felgyorsult azáltal, hogy kiküszöbölték a felesleges háromszintű összehasonlításokat az egyesítési véglegesítések feldolgozása során. Optimalizálások történtek az xdiff könyvtárban.
- Bevezetésre került néhány belső függvény, például a változó hosszúságú egész számok kódolásának és dekódolásának opcionális Rust implementációja. A Rust kód alapértelmezés szerint nem használatos, és engedélyezni kell a WITH_RUST build flaget. A jövőben várhatóan a jelentősebb Git belső komponensek átírásra kerülnek a Rustban, és a Rust kötelező build függőségként lesz hozzáadva a Git 3.0-hoz.
- Frissült a Git 3.0 ágban életbe lépő hibás változások listája. A Git 3.0-ban az alapértelmezett init.defaultBranch beállítás „main”-re változik, ami azt jelenti, hogy a „git init” paranccsal létrehozott tárházakban az alapértelmezett ág neve „main” lesz a „master” helyett. Az új tárházak inicializálásakor az SHA-256 alapú objektumazonosítókra való váltás is megtörtént. Az SHA-1 és SHA-256 alapú objektumazonosítókkal rendelkező tárházak közötti hordozhatóság egyszerűsítése érdekében mostantól elérhető az adatok átvitele egy tárházba egy hashelési algoritmus, és egy másik hashelési algoritmust használó tárházból push és pull módon.
Forrás: opennet.ru
