Bemutatva a disztrubált szövegkezelő rendszer kiadása Git 2.54. A Git magas teljesítménnyel rendelkezik, és nemlineáris fejlesztési eszközöket biztosít, amelyek az ágak elágazásán és összeolvadásán alapulnak. A múltbeli változtatásokkal szembeni ellenállóság és a történelem integritásának megőrzése érdekében implicit hash-elést alkalmaznak a korábbi történelem minden részére minden egyes commitban, valamint digitális aláírásokkal hitelesítik a fejlesztők különböző tageit és commitjait. A Git kódja terjesztésre kerül GPLv2+ licenc alatt.
A múltbeli verzióhoz képest az új verzióba 770 változtatást fogadtak el, 137 fejlesztő közreműködésével (66-an járultak hozzá először a Git fejlesztéséhez).
-
Bevezetésre került agit historyparancs, amely kísérleti lehetőségeket kínál a változások történetének újraírására, amelyek egyszerűbbek és biztonságosabbak a git rebase parancs commitjainak újraírásához képest. Két művelet érhető el:
- git history reword a megadott commit üzenetének újraírásához anélkül, hogy megváltoztatná a munkafát és az indexet (az észrevételeken kívül minden érintetlen marad). Például az elgépelés javításához.
- git history split a megadott commit interaktív felosztásához két külön commitra, a kiválasztott részek átcsoportosításával az eredeti commitból egy másodlagos commitba.
A jövőbeli kiadásokban további parancsok várhatók: git history fixup a commit javítására, git history drop a commit törlésére, git history reorder a commitok sorrendjének megváltoztatására és git history squash a commitok egyesítésére.
-
Bevezetésre került egy új módszer a kezelők meghatározására ("-szkriptek kezelése a tárolóban. A(z)) a konfigurációs fájlokban. A .git/hooks mappába helyett a kezelők szkripteit minden egyes tárolóban, a kezelők hívására vonatkozó parancsot most közvetlenül a konfigurációs fájlokban lehet megadni. A beállításokat hozzárendelhetjük a tárolóhoz, vagy olyan konfigurációs fájlokban adhatjuk meg, amelyek minden tárolóra vonatkoznak (/etc/gitconfig) vagy a felhasználói tárolókra (~/.gitconfig). Több kezelőt is hozzárendelhetünk egy eseményhez. A .git/hooks-ból származó szkriptek továbbra is futnak, de a konfigurációs fájlokból származó kezelők után kerülnek végrehajtásra. A kezelők listájának megtekintéséhez a git hook list parancsot kell használni, és a kezelők hívásának szelektív letiltásához a hook..enabled = false beállítást használhatjuk:
[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 parancsban „git karbantartás” alapértelmezés szerint a geometric stratégiát alkalmazza (git config set maintenance.strategy geometric), amely lehetővé teszi a nagy monorepozitorijok karbantartási idejének csökkentését. Összehasonlítva a korábban használt stratégiával, amely a git gc parancs logikáját alkalmazta, az új stratégia elkerüli az összes objektum újrapakkolását és kerül bizonyos erőforrásigényes műveleteket, mint például az összes pack fájl egyesítése (ha lehetséges, az egyesítés részenként történik, és az eltávolított objektumok tisztítása nélkül).
- Az objektumok adatbázisa (ODB) és a kapcsolódó API-k új architektúrára lettek átállítva, amely bővíthető háttérszolgáltatásokat használ. Az elvégzett átalakítás elvonatkoztatja az objektumok tárolási formátumát, és a jövőben lehetővé teszi olyan funkciók megvalósítását, mint a különféle háttérszolgáltatók és objektumformátumok, például nagy bináris fájlok hatékonyabb tárolása vagy nagy git-tárhelyek működésének optimalizálása.
- A parancsban „git tároló struktúra”, ami a tároló struktúrájáról ad információt, biztosítja a teljes méret mellett a legnagyobb objektumtípusok megjelenítését is, így a méret értékelésekor elkerülhető a külső segédprogramok használata. git-sizer.
$ git repo struktúra … | * Legnagyobb objektumok | | | * Commits | | | * Maximális méret [1] | 17.23 KiB | | * Maximális szülők [2] | 10 | | * Trees | | | * Maximális méret [3] | 58.85 KiB | | * Maximális bejegyzések [4] | 1.18 k | | * Blobs | | | * Maximális méret [5] | 1019.51 KiB | | * Tags | | | * Maximális méret [6] | 7.13 KiB |
- A parancsban „git replay», a git rebase helyett, amely lehetővé teszi a történet újraalkotását a szerveren munkakönyvtár nélkül, alapértelmezetten atomikus hivatkozásfrissítést alkalmaz, (a frissítési parancsok listájának kézi végrehajtása helyett), bevezetésre került egy —revert opció a módosítások visszavonásához egy sor commitból, biztosítva van az üres commitok eldobása, és lehetőség nyílt a történet gyökeres commitig történő újraalkotására.
- A „git rev-list» és hasonló parancsokhoz hozzáadva a —maximal-only opció, amely csak a más commitok által elérhetetlen commitokat mutatja.
- A parancs „git repo info» kapott egy —keys opciót, amely lehetővé teszi az összes ismert kulcs listájának megjelenítését.
- A parancsban „git add -p» a kódblokkok közötti navigálás során az „J” és „K” billentyűk használatával megjelölésre kerültek a már jóváhagyott és kihagyott blokkok. Hozzáadva a —no-auto-advance opciót, amely letiltja a következő fájlra való automatikus váltást, hogy lehetőség legyen visszatekinteni a korábbi fájlokra commit előtt.
- Webes felület optimalizálása „gitweb» mobil eszközökről való használatra.
- A parancsban „git apply –directory» a használat előtt biztosított a fájlútvonalak normalizálása, mint például .\/un\/..\/normalized\/path.
- Dokumentálva van a saját alműveletek hozzáadásának lehetősége a git-<cmd> fájlok végrehajtható fájlok könyvtárába helyezésével.
- A parancs „git send-email» férfi támogatás a kliens hitelesítési tanúsítványoknak.
- A „git status» parancsnál implementálva lett a status.compareBranches beállítás, amellyel megadhatja a jelenlegi ággal összehasonlított ágakat:
[status] compareBranches = @{upstream} @{push}
- A „git rebase» kapott egy —trailer opciót, amely megkönnyíti a metainformációk hozzáadását minden commithoz:
git rebase —trailer "Reviewed-by: Test <test@example.com>"`
- A parancs „git fast-import» lehetőséget kapott a bejegyzések aláírásának cseréjére, amelyek érvénytelenné váltak az importálás után.
- Megérkezett a többrétegű MIDX-indexek csomagolásának (compaction) támogatása, amely lehetővé teszi a kis MIDX-index rétegek összekapcsolását az objektumok elérhetőségéről szóló információkkal és a hozzájuk tartozó bitmap fájlokkal, ezzel csökkentve a régóta meglévő tárolókban felhalmozódott rétegek számát.
- A git backfill csapatban lehetőséget biztosítottunk revíziók (commits intervallumok) és elérési útvonal maszkok megadására (pathspec) a betöltendő változástörténetek korlátozására:
git backfill main~100..main git backfill — ‘*.c’
- Alternatív hívási formák hozzáadva a git config list parancshoz – git config -l és git config —list.
- Megengedett a nem ASCII karakterek használata a parancsok álnévként megadott neveiben a konfigurációs fájlban:
[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üli tárolókhoz való hozzáférés esetén a 429-es (Too Many Requests) hibakódú hiba kezelését biztosítottuk. Az ilyen hibával végződött kéréseket mostantól nem fatális problémaként kezelik, hanem átmeneti hibaként, amelyet egy idő után meg kell ismételni. Az újbóli próbálkozás késleltetését az http.retryAfter opció határozza meg, a próbálkozások száma az http.maxRetries, a várakozási idő az http.maxRetryTime.
Forrás: linux.org.ru
