Bejelentették az elosztott verziókövető rendszer Git 2.55-ös kiadását. A legfontosabb változások közé tartozik: a Rust buildek alapértelmezés szerinti beillesztése, a megvalósítás a következőhöz: Linux az fsmonitor folyamat, egy új stratégia az inkrementális MIDX index újracsomagolására, a "git history fixup" parancs a commit javítására, az objektum elérhetőségének bitkép-generálásának optimalizálása, a párhuzamos hook-végrehajtás támogatása és a "git format-rev" parancs. A Git a GPLv2+ licenc alatt érhető el.
Az előző kiadáshoz képest az új verzió 505 változtatást tartalmaz, melyeket 100 fejlesztő segítségével készítettek elő, akik közül 33 új volt a Git fejlesztésben. Főbb új funkciók (1, 2, 3):
- A Rust nyelvi komponensek támogatása alapértelmezés szerint engedélyezve van. A rustc fordító
A Rust hozzáadódott a build függőségeihez. Rust nélküli fordításhoz használhatod a "NO_RUST=1" jelzőt a make segédprogram futtatásakor, vagy a "-Drust=disabled" kapcsolót a "meson configure" futtatásakor. A Rusttal történő fordítás letiltásának lehetősége a Git 3.0-ig támogatott lesz, amely a Rustot kötelező függőségként fogja tartalmazni. A Rust egy réteget valósít meg az SHA-1 és SHA-256 hash konfigurációk közötti hordozhatósághoz, valamint néhány belső függvényt, például a változó hosszúságú egész számok kódolását és dekódolását. A jövőben várhatóan további jelentős Git belső funkciókat fognak átírni a Rustban. - A kísérleti "git history" parancs, amely lehetővé teszi a változtatások előzményeinek átírását, frissült a commitok javítására szolgáló "git history fixup" művelettel. A "fixup" művelet lehetővé teszi a "git add" segítségével hozzáadott változtatások korábbi commitba való áthelyezését, és az összes további commit automatikus átírását, hasonlóan a "git commit --fixup=" parancs futtatásához. " és a "git rebase --autosquash" futtatása ~».
- Platformhoz Linux Megvalósításra került az fsmonitor háttérfolyamat, amely az inotify mechanizmus segítségével figyeli a fájlrendszer változásait, és lehetővé teszi a teljes munkakönyvtár bejárásának elkerülését olyan parancsok végrehajtásakor, mint a "git status". A "core.fsmonitor" beállításon keresztül engedélyezhető.
- A „git repack” parancs frissült a „--write-midx=incremental” opcióval. Ez az opció egy új stratégiát valósít meg a metaadatok frissítésére az növekményes MIDX indexben (többcsomagos index), így nem kell újracsomagolni a teljes indexet. Az növekményes többcsomagos index rétegeket használ egyetlen nagy index helyett, amely információkat tartalmaz az objektumok csomagfájlok közötti eloszlásáról. Minden réteg meghatározott számú csomagfájlt fed le, és egy külön bitképfájlban tárolódik. Ez a struktúra lehetővé teszi az új csomagfájlokban található objektumokról szóló adatok hozzáadását az indexhez, új rétegeket csatolva az indexhez a meglévő rétegek újraépítése nélkül.
A „git repack --write-midx=incremental” parancs egy új réteget ad hozzá az inkrementális MIDX indexhez, amely magában foglalja a nemrég létrehozott csomagfájlokat. A „--geometric” adattár csomagolási móddal kombinálva az új parancs lehetővé teszi több csomagfájlból származó új objektumok egyetlen nagyobb csomagfájlba való egyesítését, és szükség esetén az inkrementális MIDX index több szomszédos rétegének csomagolását és egyesítését. Ez a stratégia lehetővé teszi, hogy a „git repack” csak a felső rétegeket írja át, a régebbi, nagyobb rétegeket érintetlenül hagyva. Emellett megakadályozza a réteglánc ellenőrizetlen növekedését azáltal, hogy a rétegek teljes számát az objektumok teljes számának logaritmusával arányosan tartja.
- Az objektum elérhetőségi bitképek generálását jelentősen optimalizálták egy új objektumfa bejárási algoritmus révén, amely kiküszöböli a felesleges rekurziót, az objektumpozíciók gyorsítótárazását, a bitképek rendezését az XOR művelettel való kombinálás előtt, valamint a pszeudo-egyesítésű bitképek létrehozásának kódjának átdolgozását. A tesztrepozitóriumban ezek az optimalizálások 612 másodpercről 294 másodpercre csökkentették a bitkép generálásának idejét.
- A független hookok párhuzamos végrehajtása mostantól lehetséges a konfigurációs fájlokban. Azok a hookok, amelyek befolyásolják vagy figyelembe veszik a megosztott állapotot, például azok, amelyek módosítják a véglegesítési megjegyzéseket, vagy megvizsgálják az indexeket és a munkafát, nem futtathatók párhuzamosan. A linter ellenőrzéshez és az egységteszteléshez használt hookok azonban futtathatók párhuzamosan. A párhuzamos végrehajtást lehetővé tevő hookok a "hook.hook_name.parallel = true" paraméterrel konfigurálhatók. Az egyidejűleg futtatható feladatok számát a hook.jobs hook beállítás határozza meg. .jobs fájllal vagy a „-j” parancssori opcióval.
- A „git pack-objects --path-walk” parancs mostantól lehetővé teszi olyan szűrők megadását, mint a „blob:none”, a „blob:limit=”. ", "fa:0", "objektum:típus= », «ritka: " és a "combine:". A tesztben a "--path-walk" végrehajtásakor a blobok elvetése 16%-kal csökkentette a létrehozott csomagfájl méretét.
- Hozzáadva a "git format-rev" parancs a commit listákban említett vagy tetszőleges szövegben található formázási változatokhoz és objektumnevekhez (például ez használható a commit jegyzetek feldolgozására szolgáló hookokban).
git utolsó módosítása | git format-rev --stdin-mode=text --format=%an
Junio C Hamano beépített/commit.c
- A legtöbb terminálvezérlő szekvenciák kihagyása az információs üzenetekben és a továbbított hibaüzenetekben alapértelmezés szerint engedélyezve van. szerverKártékony hozzáférés esetén szerver 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ákon keresztül. Az elemek kiemelésére szolgáló escape-szekvenciák támogatása megmaradt.
- A git checkout -m parancs mostantól automatikusan menti az ütköző helyi módosításokat a stash területre anélkül, hogy azonnal fel kellene oldani az ütközést.
- A „git push” parancs mostantól lehetővé teszi, hogy egyetlen paranccsal több külső Git-kiszolgálóra küldj el egy ágat. Például, ha a fő ágat nemcsak a főkiszolgálóra, hanem a tükrökre is szeretnéd küldeni, létrehozhatsz egy „közzététel” csoportot a következőből: szervereket „github”, „gitlab” és „tükör”:
git config remotes.publish "github gitlab tükör"
git push közzététel fő - A „git log --graph” parancs mostantól rendelkezik a „--graph-lane-limit=" opcióval. » a függőleges sávok számának korlátozása az ágak vizualizációjakor, ami lehetővé teszi, hogy helyet hagyjunk a képernyőn a véglegesített adatoknak a nagyszámú ággal rendelkező adattárakban.
...
* | | | | 619931f561 A 'dl/posix-unused-warning-clang' egyesítése
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: egyszerűsíti a GIT_GNUC_PREREQ() összehasonlítást
| * | | | ~ ffd45926dc compat/posix.h: GIT_GNUC_PREREQ() és UNUSED törlése
|\ \ \ \ \~
| * | | | ~3f5203eeb4 ls-files: pathspecifikáció szűrése az lstat előtt - A „git log” és a „git rev-list” parancsok mostantól rendelkeznek a „--max-count-oldest=" kapcsolóval. , amely lehetővé teszi az N legrégebbi commit kiválasztását egy tartományban.
Forrás: opennet.ru
