A Git 2.54-es verzióját mutatták be, amely egy elosztott forráskód-ellenőrző rendszer. A Git kiemelkedő teljesítménye és a nemlineáris fejlesztési eszközöket kínálja, amelyek ágazásokra és egyesítésekre alapoznak. Az elágazásokkal való manipuláció integritásának és a változtatásokra való ellenállónak biztosítása érdekében a rendszer implicit hash-elást alkalmaz az összes előző történetre minden egyes elkötelezett (commit) esetén, és a fejlesztők digitális aláírásaival igazolják az egyes címkék (tag) és elkötelezettek (commit) hitelesítőségét. A Git kódja a GPLv2+ licenc alatt terjesztett.
Az előző kiadáshoz képest az új verzióba 770 változtatást fogadtak el, amelyeket 137 fejlesztő készített (66-an először vettek részt a Git fejlesztésében). A legfontosabb újítások:
- Megvalósítva a „git history” parancsot, amely kísérleti lehetőségeket nyújt a változási történet felülírására, amely biztonságosabb és egyszerűbb, mint a kommitok újrabázisozása a „git rebase” parancs által. Két művelet érhető el:
- „git history reword ” az adott elkötelezett üzenetének újraszerkesztésére anélkül, hogy megváltoztatná a munkakövet és az indexet (kivéve a megjegyzést, a többi érintetlen marad). Például egy elgépelés javítására.
- „git history split ” az adott elkötelezett interaktív felosztására két külön elkötelezetté, a választott részek áthelyezésével az eredeti elkötelezettből egy további elkötelezettbe.
A jövőbeli kiadásokban további parancsok várhatóak: „git history fixup” az elkötelezett javítására, „git history drop” az elkötelezett törlésére, „git history reorder” az elkötelezettek sorrendjének megváltoztatására és „git history squash” az elkötelezettek egyesítésére.
- Bevezetésre került egy új módszer a kezelők (hook) meghatározására a konfigurációs fájlokban. A kezelőkkel ellátott szkriptek elhelyezése a „.git/hooks” könyvtárban minden tárolóban helyett a kezelők meghívására szolgáló parancsokat most közvetlenül a konfigurációs fájlokban lehet megadni. A beállítások hozzárendelhetők a tárolókhoz, vagy megadhatók a minden tárolóra vonatkozó konfigurációs fájlokban ( /etc/gitconfig) vagy a felhasználói tárolókhoz (~/.gitconfig). Lehetséges több kezelőt összekapcsolni egy eseménnyel. A „.git/hooks” fájlokból származó szkriptek továbbra is meghívásra kerülnek, de a konfigurációs fájlokból származó kezelők után indulnak el. A kezelők listájának megtekintéséhez használja a „git hook list” parancsot, és a kezelők meghívásának szelektív letiltásához a „hook..enabled = false” beállítást. [hook „linter”] event = pre-commit command = ~/bin/linter —cpp20 [hook „no-leaks”] event = pre-commit command = ~/bin/leak-detector $ git hook list pre-commit global linter ~/bin/linter —cpp20 local no-leaks ~/bin/leak-detector
- A „git maintenance” parancsnál alapértelmezetten a „geometric” stratégia van érvényben („git config set maintenance.strategy geometric”), amely enyhíti a karbantartási időt nagy monorepozitóriumok esetén. A korábban alkalmazott stratégiához képest, amely a „git gc” parancs logikáját használta, az új stratégia elkerüli az összes objektum újratömörítését és kizárja a túlzottan erőforrás-igényes műveleteket, mint például az összes pack-fájl egyesítése (ha lehetséges, az egyesítés részletekben és a törölt objektumok tisztítása nélkül történik).
- Az objektum adatbázis (ODB) és a hozzá kapcsolódó API-k egy új architektúrára váltottak, amely a csatlakoztatható háttérszolgáltatók használatán alapul. A végrehajtott újraszervezés elkülöníti az objektumok tárolási formátumát, és a jövőben lehetővé teszi olyan lehetőségek megvalósítását, mint az alternatív háttérszolgáltatók és formátumok, például a nagyobb bináris fájlok hatékonyabb tárolásához vagy nagyobb git-hosztolók működésének optimalizálásához.
- A „git repo structure” parancs, amely információkat ad a repository szerkezetéről, nemcsak az összes méretet, hanem a legnagyobb objektumok típusonkénti megjelenítését is biztosítja, így a méretértékeléshez nem szükséges a git-sizer külső eszköz használata. $ git repo structure … | * Legnagyobb objektumok | | | * Commitok | | | * Maximális méret [1] | 17.23 KiB | | * Maximális szülők [2] | 10 | | * Fák | | | * Maximális méret [3] | 58.85 KiB | | * Maximális bejegyzések [4] | 1.18 k | | * Blokkok | | | * Maximális méret [5] | 1019.51 KiB | | * Címkék | | | * Maximális méret [6] | 7.13 KiB |
- A „git replay” parancs, amely a „git rebase” helyett használható a történelem újjáépítésére, szerveren nincs munkaterülettel, alapértelmezés szerint atomikus hivatkozásfrissítés van engedélyezve (a frissítési lista parancsok update-ref manuális végrehajtásának megjelenítése helyett), a „—revert” opció is be lett vezetve a commit sorozatok módosításainak visszavonására, és lehetőség van a történelem újjáépítésére a gyökér commitig.
- A „git rev-list” és hasonló parancsokhoz a „—maximal-only” opció került bevezetésre, amely csak a többi commit által elérhetetlen commitokat jeleníti meg.
- A „git repo info” parancshoz hozzá lett adva a „—keys” opció, amely megjeleníti az összes ismert kulcs listáját.
- A „git add -p” parancsban a kód blokkok közötti navigáció során a „J” és a „K” billentyűkkel biztosítva lett a már jóváhagyott és kihagyott blokkok jelölése. Be lett vezetve a „—no-auto-advance” opció, amely letiltja a következő fájlra való automatikus ugrást, lehetővé téve a korábbi fájlokhoz való visszatérést commit előtt.
- Az „gitweb” webes felületének optimalizálása mobil eszközökön való használatra történt.
- A „git apply —directory” parancs előtt a fájl útvonalak, mint például „.\/un\/..\/normalized\/path”, normalizálása biztosítva lett.
- Dokumentálva lett a saját alműveletek hozzáadásának lehetősége a „git-<cmd>” fájlok végrehajtási fájlok mappájában történő elhelyezésével.
- A „git send-email” parancshoz a kliens tanúsítványok támogatása lett hozzáadva.
- A „git status” parancshoz megvalósult a „status.compareBranches” beállítás, amellyel meg lehet határozni azokat az ágakat, amelyekhez a jelenlegi ágat összehasonlítják. [status] compareBranches = @{upstream} @{push}
- A „git rebase” parancshoz a „—trailer” opció került bevezetésre, amely megkönnyíti a metaadatok hozzáadását minden commithoz. git rebase —trailer „Reviewed-by: Test <test@example.com>”
- A "git fast-import" parancsba hozzáadódott a lehetőség, hogy a commitok érvénytelen aláírásait cserélje.
- Támogatás került hozzáadásra a MIDX (multi-pack index) több csomag indexeinek tömörítésére, ahol a kisebb MIDX-index rétegek összevonásra kerülnek az objektumok elérhetőségéről szóló információkkal és a hozzájuk kapcsolódó bitmap fájlokkal, ezzel csökkentve a hosszú ideje fennálló repozitóriumokban felhalmozódott rétegek számát.
- A "git backfill" parancsban lehetőség nyílt a revíziók (commit tartományok) és a pathspec maszkok megadására a betölthető változástörténet korlátozására. git backfill main~100..main git backfill — '*.c'
- Alternatív hívási formák kerültek hozzáadásra a "git config list" parancshoz — "git config -l" és "git config —list".
- Engedélyezett a nem-ASCII karakterek használata a parancsok aliasainak neveiben, amelyek a konfigurációs fájlban vannak megadva. [alias "fetch"] command = fetch
- Megváltozott a lejárt GPG- kulccsal rendelkező aláírások megjelenítése, amelyek érvényesek voltak a commit aláírásának idején. Az ilyen aláírások mostantól érvényesnek számítanak, megjegyzéssel a kulcs elavulásáról (korábban piros színnel kiemelésre kerültek, ami a helytelenségük érzetét keltette).
- HTTP-n keresztül történő repozitóriumok elérésekor biztosított a 429-es (Túl sok kérés) hibakód kezelése. Az ilyen hibával végződő kéréseket most nem tekintik fatális problémának, hanem ideiglenes hibának, amelyet egy idő után meg kell ismételni. Az újbóli megkísérlés késleltetése az «http.retryAfter» opcióval, az újrapróbálkozások száma az «http.maxRetries», várakozási idő az «http.maxRetryTime» opcióval állítható be.
Forrás: opennet.ru
