Git 2.55

Bemutatva a disztrubált szövegkezelő rendszer kiadása Git 2.55. A főbb változások között szerepel: a Rust alapértelmezett beépítése, Linux-on az fsmonitor folyamat megvalósítása, az inkrementális MIDX-index újracsomagolási stratégiája, a git history fixup parancs a commit javítására, az objektumok elérhetőségi térképeinek generálásának optimalizálása, a hook-ok párhuzamos végrehajtásának támogatása, git format-rev parancs. Git kód terjesztésre kerül GPLv2+ licenc alatt.

A korábbi kiadással összehasonlítva az új verzió 505 módosítást tartalmaz, amelyeket 100 fejlesztő készített, közülük 33 először vett részt a Git fejlesztésében.

A legfőbb újdonságok (github.blog, gitlab.com/blog, gitlab.com/git-scm):

  • már tartalmaz egy előre létrehozott önaláírt TLS/SSL tanúsítványt. Ennyi nekem elegendő, mivel zárva tartom a külső hozzáférést. Azoknak, akik más típusú tanúsítványokat szeretnének használni, van bekapcsolva a Rust nyelvű komponensek támogatása. A rustc fordító hozzáadva az építési függőségek közé. Rust nélkül is lehet építeni a NO_RUST=1 kapcsoló használatával a make eszköz indításakor vagy -Drust=disabled a meson configure végrehajtásakor. A Rust nélküli építés lehetősége a Git 3.0 ágazatig lesz támogatva, amelyben a Rust. bekapcsolva kötelező függőségek közé kerül. A Rust nyelven készült egy réteg a SHA-1 és SHA-256 hashtípusok közötti hordozhatóság érdekében, valamint néhány belső funkció, mint például a változó hosszúságú egész értékek kódolása és dekódolása. A jövőben a Git jelentősebb belső komponenseinek Rust-ra történő átdolgozása várható.
  • Az "git history", amely lehetőségeket biztosít a módosítások történetének újraírására, hozzáadta a „git history fixup” műveletet a commit javításához. A fixup művelet lehetővé teszi, hogy a git add segítségével hozzáadott módosításokat egy korábbi commit-ra helyezzük át, és automatikusan újraírt minden következő commit-ot, a git commit —fixup=<commit> parancs végrehajtásának megfelelően, majd a git rebase —autosquash <commit>~ futtatásával.
  • Linux platformra egy háttérfolyamatot valósítottak meg fsmonitor, amely nyomon követi a fájlrendszer változásait inotify mechanizmus segítségével, és lehetővé teszi, hogy elkerüljük az összes munkakönyvtár átnézését olyan parancsok végrehajtásakor, mint a git status. A bekapcsolás a „core.fsmonitor” beállítással történik.».
  • A git repack parancsba egy új —write-midx=incremental mód került bevezetésre, amely egy új adatfrissítési stratégiát valósít meg az inkrementális MIDX-indexben (multi-pack index), lehetővé téve a teljes index újrapackelése nélküli működést. Az inkrementális többcsomag-indexben egy nagy index helyett, amely a csomagfájlok közötti objektumeloszlás információit tartalmazza, rétegekbe van szervezve — minden réteg egy meghatározott számú csomagfájlt ölel fel, és egy külön bitmap-fájlban tárolódik. Ez a struktúra lehetővé teszi, hogy új csomagfájlokban található objektumok adatait adjuk hozzá az indexhez, új rétegek csatlakoztatásával az indexhez anélkül, hogy a meglévő rétegeket újra kellene építeni. A git repack —write-midx=incremental parancs lehetővé teszi egy új réteg hozzáadását az inkrementális MIDX-indexhez, amely a nemrégiben létrehozott csomagfájlokat foglalja magában. A repozitóriumok —geometric csomagolási módjával kombinálva az új parancs lehetőséget ad arra, hogy a több csomagfájlban található új objektumokat egy nagyobb csomagfájlba egyesítsük, és ha szükséges, végrehajtsuk a csomagolást és több szomszédos réteg egyesítését az inkrementális MIDX-indexben. Ez a stratégia lehetővé teszi, hogy a git repack során csak a legfelső rétegeket írjuk felül, miközben a régi nagy rétegek érintetlenek maradnak, valamint megakadályozza a rétegek láncolatának kontrollálatlan növekedését, fenntartva a rétegek számát a teljes objektumok számának logaritmusához arányosan.
  • Jelentősen optimalizálták az objektumok elérhetőségi bitképeinek generálását az új objektumfa bejárási algoritmus révén, amely kizárja a felesleges rekurziót, a objektumok pozícióinak gyorsítótárba helyezését, a bitképek rendezését a XOR művelettel történő egyesítés előtt és a pszeudoegyesülési bitképek létrehozására vonatkozó kód átalakítását (pseudo-merge). A tesztelő repozitóriumban az optimalizálások lehetővé tették a bitképek generálási idejének csökkentését 612 másodpercről 294 másodpercre.
  • Párhuzamos végrehajtásának lehetősége valósult meg független hookok A konfigurációs fájlokban. Párhuzamosan nem futtathatók olyan hook-ok, amelyek befolyásolják a közös állapotot vagy figyelembe veszik azt, például a commit megjegyzések megváltoztatása vagy az indexek és a munkafüzet ellenőrzése. Ugyanakkor párhuzamosan futtathatók a hook-ok a linter ellenőrzésére és az egységtesztelés végrehajtására. A párhuzamosan futtatható hook-ok a hook. хуk_имя.parallel = true paraméterrel állíthatók be. Az egyszerre futtatható munkák száma a hook.jobs, hook..jobs beállítással vagy a -j parancssori opcióval határozható meg.
  • A git pack-objects —path-walk parancsban megvalósult a szűrők megadásának lehetősége, mint például blob:none, blob:limit=, tree:0, object:type=, sparse: és combine:. Az elvégzett teszt során a blobok eldobása a —path-walk végrehajtása közben 16%-kal csökkentette a létrehozott pack fájl méretét.
  • A git format-rev parancs hozzáadva lett a revíziók és az objektumnevek formázásához, amelyek commit listákban vagy tetszőleges szövegben találhatók (például használható hook-okban a commit megjegyzések feldolgozására).

git last-modified | git format-rev —stdin-mode=text —format=%an

Junio C Hamano builtin/commit.c

  • Alapértelmezés szerint a legtöbb terminál vezérlőszekvencia a szerver által átadott információs üzenetekben és hibaüzenetekben escape-elésre kerül. Káros szerverekre történő hivatkozáskor az ilyen escape-szekvenciák használhatók a kimenet elrejtésére vagy módosítására, például a kurzor mozgatására és a szöveg törlésére szolgáló escape-szekvenciák révén. Az escape-szekvenciák támogatása megmaradt a színezett elemek hangsúlyozásához.
  • A git checkout -m parancs mostantól automatikusan elmenti a konfliktusos helyi változtatásokat a stash területre anélkül, hogy azonnal meg kellene oldani a konfliktust.
  • A git push parancshoz hozzáadva lett a lehetőség, hogy egy ágat több külső Git szerverre egyetlen parancs alatt lehessen elhelyezni. Például a main ág továbbítása nemcsak a fő szerverre, hanem tükörszerverekre is lehetséges a github, gitlab és mirror szerverekből álló publish csoport létrehozásával:

git config remotes.publish "github gitlab mirror"
git push publish main

  • A git log —graph parancsban hozzáadva lett a —graph-lane-limit= opció a ágak vizualizálásakor megjelenő függőleges sávok számának korlátozására, lehetővé téve, hogy hely maradjon a képernyőn a közösségi repozitóriumokban sok ággal rendelkező commitok adatai számára.

…
* | | | | 619931f561 Összevonás a 'dl/posix-unused-warning-clang' ággal
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: egyszerűsíti a GIT_GNUC_PREREQ() összehasonlítást
| * | | | ~ ffd45926dc compat/posix.h: tisztázza a GIT_GNUC_PREREQ() és az UNUSED szempontokat
|\ \ \ \ \~
| * | | | ~ 3f5203eeb4 ls-files: szűri a pathspec-et lstat előtt

  • A git log és git rev-list parancsokhoz hozzáadva lett a —max-count-oldest= opció, amely lehetővé teszi az N legöregebb commit kiválasztását a tartományban.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster