Megjelent a Git 2.48 elosztott forráskezelő rendszer legújabb verziója. A Git magas teljesítménnyel rendelkezik, és olyan eszközöket kínál a nem lineáris fejlesztéshez, amelyek az ágak elágazásán és egyesítésén alapulnak. A történet integritásának biztosítása és a "visszamenőleges" módosításokkal szembeni ellenállás érdekében minden egyes commitban implicit hash-elést alkalmaznak az összes korábbi történethez, valamint egyes címkék és commitok digitális aláírásával hitelesítik a fejlesztők által végzett változtatásokat. A Git kódja GPLv2+ licenc alatt terjed.
A legutóbbi kiadáshoz képest az új verzióba 605 változtatás került bevezetésre, 93 fejlesztő részvételével, akik közül 35-en először vesznek részt a fejlesztésben. Főbb újdonságok:
- Megvalósult a lehetőség, hogy a Git a Meson build rendszer segítségével is elkészíthető legyen a GNU Make és CMake mellett. A Git felépítéséhez mostantól a „meson setup build && ninja -C build” parancs használható. Megjegyzendő, hogy a GNU Make alkalmazásakor használt Makefile 3887 sorra nőtt, és nem olyan egyszerű, mint szeretnénk. A Meson eszközkészlet leegyszerűsíti a build rendszer használatát, kényelmes a cross-platform build-ekhez, és elérhetőbbé teszi a kezdők vagy a Make használatában tapasztalatlan fejlesztők számára. A Make és CMake támogatásának leállítása a közeljövőben nem tervezett.
- Új build lehetőségek kerültek hozzáadásra, amelyek lehetővé teszik a SHA-1 hash alternatív megvalósításainak használatát a pack fájlokban található adatblokk integritásának ellenőrzésére használt ellenőrző összegek kiszámításakor. Az ellenőrző összeg kiszámítása nagyon fontos, például egy Linux kernel klónozása során a processzoridő körülbelül 78%-át erre fordítják. Az alapértelmezett megvalósítás további ütközésellenőrzéseket és védelmet kínál a SHA-1 ellen támadásokkal szemben, mint például a SHAttered és Shambles. Az ilyen védelem, amely további erőforrásokat igényel, csak akkor értelmes, ha a SHA-1-et kriptográfiai célokra használják, és haszontalan az indexelt adatok integritásának ellenőrzésekor.
A Git gyorsabb SHA-1 megvalósítással való építésének lehetőségét kínálják oly módon, hogy az nem alkalmas kriptográfiai alkalmazásokra. Javasolt egy sor *_UNSAFE opció, például az „OPENSSL_SHA1_UNSAFE”. A GitHubon a leegyszerűsített SHA-1 használata 10-13%-kal növelte az adatok kiemelésének és klónozásának teljesítményét.
- Hozzáadva a "range-diff" parancs használatához az "—remerge-diff" opció, amely lehetővé teszi a mergelés által generált összesített eredmény és a tényleges adatok közötti különbségek megjelenítését, amelyeket a "merge" parancs végrehajtása után rögzítenek a commitban. Az "—remerge-diff" opció használata esetén a konfliktusok feloldása közötti különbségek nem különülnek el minden szülőágra, hanem általános különbségeket mutatnak a konfliktusos fájl és az a fájl között, amelyben a konfliktusokat megoldották. A "range-diff" parancs kontextusában az új opció hasznos lehet a commitcsomagok összehasonlításához, miután a commitsorozatot a "rebase" parancs "—rebase-merges" opciójával áthelyezték.
- Hozzáadva a Git tesztesemények futtatásának lehetősége memória-eltérés-észlelési üzemmódban. Mivel a git olyan segédprogramokat biztosít, amelyek a hívott függvény végrehajtása után leállnak, a memóriaeltéréseket korábban nem tekintették nagy problémának. A memóriaeltérések teljes eltávolításának szükségessége aktuálissá vált, miután elkezdődött a belső funkciók egy külön könyvtárba történő kiemelése, amely hosszú távon futó folyamatokban alkalmazható.
- Megkezdődött az elavult üzemmódok és funkciók listájának összeállítása, amelyek támogatását a jövőben meg kívánják szüntetni. Feltételezhető, hogy az elavult funkciók eltávolítása a Git 3.0 kiadásában fog megtörténni, ami visszafelé nem kompatibilis változásokat fog tartalmazni.
- Folytatódott a "git for-each-ref" parancs optimalizálása, amely a repozitóriumban található hivatkozások listáját adja vissza. Az optimalizálás, amely egyesíti a hivatkozások szűrésére és a kimenet formázására szolgáló kezelőket, most már nemcsak a nem rendezett kimenetre vonatkozik, hanem a "—sort" opció megadásakor is.
- Javították a «reftable» háttérrendszer megvalósítását, ami blokk-alapú tárolást tesz lehetővé a hivatkozások hatékony tárolására a virtuális ágak és címkék tárolójában. A reftable jelentősen felgyorsítja a keresést, olvasást és írást azokban a tárolókban, ahol nagyon sok hivatkozás található. Az új verzióban megszűnt a bizonyos segédfunkciók API-jának használata, hogy tovább csökkentsék a libgit könyvtárat a fordítási függőségek közül. Megvalósították a hiba kezelésének adaptív megközelítését, amely a memóriaallokáló funkciók által visszaadott hibákat kezeli (memóriakimerülés már nem okoz váratlan leállást). Felgyorsították a hivatkozások létrehozásának műveleteit és csökkentették a memóriahasználatot.
- A részleges klónozás megvalósításában orvosolták a problémákat, amelyek ciklikus működéshez és a tároló sérüléséhez vezettek a «git gc» parancs végrehajtása után.
- A «git fetch <remote>» parancs végrehajtásakor, ha a helyi rendszeren nincs «refs/remotes/<remote>/HEAD» és a másik oldalon van egy ágazat, amelyre a HEAD hivatkozik, a «refs/remotes/<remote>/HEAD» mostantól átirányítódik erre az ágra. A szinkronizáció kezelésére «refs/remotes/<remote>/HEAD» HEAD értékével a másik oldalon, hozzáadták a remote.<remote>.followRemoteHEAD beállítást.
- Hozzáadták a «remote.<name>.serverOption» beállítást, ami hasonló a parancssori opcióhoz «—serverOption=<value>».
- A «git rebase —rebase-merges» parancsban lehetőség szerint a ágak neveinek használatát biztosítják címkékként.
- A «git notes add» és «git notes append» parancsokhoz hozzáadták a ‘-e’ zászlót, ami lehetővé teszi, hogy a megjegyzést a GIT_EDITOR környezeti változóban megadott külső szövegszerkesztőben nyissák meg.
- Javították a GCC 15 és a C23 szabvánnyal való kompatibilitást.
- Abbahagyták az elavult libcURL és Perl verziók támogatását.
Forrás: opennet.ru
