Git 2.37-os forrásvezérlő kiadás

Bejelentették a Git 2.37 elosztott forrásvezérlő rendszer kiadását. 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 előző kiadáshoz képest az új verzió 395 változtatást tartalmaz, 75 fejlesztő részvételével készült, ebből 20 először vett részt a fejlesztésben. Főbb újítások:

  • Széleskörű használatra készen áll a részleges indexek (sparse index) mechanizmusa, amely a tárhelynek csak egy részét fedi le. A részleges indexek javíthatják a teljesítményt és helyet takaríthatnak meg azokban a lerakatokban, amelyek részleges klónozási (ritka ellenőrzési) műveleteket hajtanak végre, vagy a lerakat nem teljes másolatával dolgoznak. Az új kiadás befejezi a részleges indexek integrálását a git show, git sparse-checkout és git stash parancsokba. A részleges indexek használatából adódó legszembetűnőbb teljesítményelőny a git stash parancsnál látható, amely bizonyos helyzetekben 80%-kal növelte a végrehajtási sebességet.
  • Egy új „cruft packs” mechanizmus került bevezetésre az olyan elérhetetlen objektumok becsomagolására, amelyekre nem hivatkoznak a tárolóban (nem hivatkoznak rájuk ágak vagy címkék). Az elérhetetlen objektumokat a szemétgyűjtő törli, de a versenyfeltételek elkerülése érdekében egy bizonyos ideig a tárolóban maradnak, mielőtt törli őket. Az elérhetetlen objektumok előfordulási idejének nyomon követéséhez címkéket kell csatolni hozzájuk a hasonló objektumok változási idejével, ami nem teszi lehetővé egy csomagfájlban való tárolásukat, amelyben minden objektumnak közös változási ideje van. Korábban az egyes objektumok külön fájlba mentése problémákhoz vezetett, amikor nagyszámú friss, elérhetetlen objektum volt, amelyek még nem voltak jogosultak a törlésre. A javasolt „cruft packs” mechanizmus lehetővé teszi, hogy az összes elérhetetlen objektumot egyetlen csomagfájlban tárolja, és az egyes objektumok módosítási idejére vonatkozó adatokat egy külön táblázatban tükrözze, amely egy „.mtimes” kiterjesztésű fájlban tárolódik.
  • Windows és macOS esetén beépített mechanizmus található a fájlrendszer változásainak nyomon követésére, amely lehetővé teszi, hogy elkerülje az iterációt a teljes munkakönyvtárban, amikor olyan műveleteket hajt végre, mint a „git status”. Korábban a változások nyomon követésére az FS-ben bekövetkezett változások nyomon követésére szolgáló külső segédprogramokat, például a Watchmant hook-okon keresztül lehetett csatlakoztatni, ehhez azonban további programok telepítésére és konfigurációra volt szükség. Most a megadott funkcionalitás be van építve, és a „git config core.fsmonitor true” paranccsal engedélyezhető.
  • A „git sparse-checkout” parancsban elavulttá nyilvánították a „—cone” mód alternatívájának támogatását, a részleges klónozás sablonjainak meghatározásának módszerét, amely lehetővé teszi a tárhely azon részének meghatározásakor, amelyre vonatkozik. a klónozási művelet, az egyes fájlok listázása a „.gitignore” szintaxis használatával, amely nem teszi lehetővé részleges indexek optimalizálására való használatát.
  • Fokozott rugalmasság az fsync() hívás konfigurálásában, hogy a változásokat a lemezre törölje. A „batch” szinkronizálási stratégia támogatása hozzáadásra került a „core.fsyncMethod” paraméterhez, amely lehetővé teszi a munka felgyorsítását nagyszámú egyedi fájl írásakor azáltal, hogy felhalmozódik a változtatások a visszaírási gyorsítótárban, amelyet egyetlen fsync() állít vissza. hívás. A teszt, amelynek eredményeként 500 fájl került hozzáadásra a „git add” paranccsal, 0.15 másodperc alatt fejeződött be, amikor az új módot engedélyezték, míg az fsync() hívása minden fájlnál 1.88 másodpercet vett igénybe, az fsync használata nélkül pedig 0.06 másodpercet.
  • Az ágbejárási parancsok, például a „git log” és a „git rev-list” mostantól rendelkeznek egy „-since-as-filter=X” opcióval, amely lehetővé teszi az „X”-nél régebbi véglegesítések információinak kiszűrését. Ellentétben a „—sice” opcióval, az új parancs szűrőként valósul meg, amely nem állítja le a keresést a megadott időnél régebbi első véglegesítés után.
  • A „git remote” parancsban a „-v” jelző megadásakor a lerakat részleges klónjaira vonatkozó információk jelennek meg.
  • Hozzáadott "transfer.credentialsInUrl" beállítás, amely a "warn", "die" és "allow" értékeket veheti fel. Ha a „remote. .url" egyszerű szöveges hitelesítő adatok esetén a "fetch" vagy "push" művelet végrehajtása hibával meghiúsul, ha a "transfer.credentialsInUrl" beállítása "die", vagy figyelmeztetés, ha a "warn" értékre van állítva.
  • Alapértelmezés szerint a „git add -i” parancs interaktív módjának új megvalósítása, amelyet Perlről C-re írtunk át, engedélyezve van.

Forrás: opennet.ru

Hozzászólás