A Git 2.56 kiadása

Megjelent a Git 2.56 elosztott szövegkezelő rendszer verziója. A Git kódja GPLv2+ licenc alatt terjed. Az előző kiadással összehasonlítva az új verzióba 748 változtatás került, amelyet 104 fejlesztő készített, közülük 39-en először vettek részt a Git fejlesztésében. Főbb újítások (1, 2, 3):

  • Hozzáadva a "git add --resolved" mód a konfliktusok feloldására a ágazatok összevonásakor, amely ellenőrzi a fájlokat a konfliktusjelzők jelenléte szempontjából, és amennyiben legalább egy fájlban konfliktusjelzőt talál, hibát jelez, nem indexeli a fájlokat, és megjeleníti a javítást igénylő fájlok listáját. Ezzel szemben a "git add --update" parancs új módja kizárólag a konfliktus állapotú fájlokat dolgozza fel, a konfliktushoz nem kapcsolódó módosított fájlokat figyelmen kívül hagyva, lehetővé téve egy biztonságos típusú ágazat összevonását, még akkor is, ha a munkakönyvtárban más befejezetlen módosítások találhatók (a "git add --update" az összes korábban nyomon követett módosított fájlt hozzáadta az indexhez a munkakönyvtárban).
  • Jelentősen felgyorsult a nagy tárolókkal való munka a közös commitok összevonása és összehasonlítása algoritmusának optimalizálásával. A feldolgozás során most figyelembe veszik azokat a commitokat, amelyek kizárólag az egyik ághoz tartoznak, lehetővé téve a keresés leállítását miután minden lehetséges közös ős felfedezésre került, anélkül, hogy további időt pazarolnánk a változások történetének átvizsgálására. Az egyik tesztelt tárolóban a keresés sebessége átlagosan 20-szorosára nőtt, míg egy másik esetében a gyorsulás elérte a 70-szeresét. A "git merge-base --all v4.8 v4.9" parancs végrehajtásakor a Linux kernel tárolóban a keresési lépések száma 167 ezerre csökkent 3,8 ezerre.
  • A szerverhasználatra optimalizált "—path-walk" újrapakolási mód lehetővé teszi kompaktabb pack-fájlok létrehozását az objektumok könyvtárfa szerinti csoportosításával (például a Fluent UI tárolónál a "—path-walk" használata lehetővé tette a pack-fájl méretének csökkentését 558 MB-ról 164 MB-ra). Az új verzióban megvalósították a "—path-walk" mód használatát elérhetőségi bitképekkel (reachability bitmap) és delta-szigetekkel (delta island), amelyeket a git-tárolók a munka gyorsítására és a forkok elkülönítésére használnak az alap tárolótól.
  • Eltávolították azokat a szűk keresztmetszeteket, amelyek felesleges számításokhoz vezettek nagy tárolókban: eltávolították a felesleges fájlállapot-ellenőrzéseket a reftable írása során; kizárták az új pack-fájl beszúrása során a lista újbóli átvizsgálását; felgyorsították a reftable-lel kapcsolatos műveleteket, ahol sok törlési rekord halmozódott fel; optimalizálták a "git diff" működését fájlok útvonalkorlátozásának megadásakor. Az optimalizálások után a reftable kezelésének sebessége nagy törlések számánál 65-szörösére nőtt (13 másodpercről 0,2 másodpercre), és a problémás "git diff" parancs végrehajtása a Chromium tárolóban, amely 500000 elemet tartalmazott az indexében, 8 percről 0,07 másodpercre csökkent.
  • A "git history" kísérleti parancshoz, amely a módosítások történetének átírását teszi lehetővé, hozzáadták a "git history drop" műveletet, amely lehetővé teszi egy kiválasztott commit eltávolítását, automatikusan összekapcsolva annak utódait a szülő commit-tal.
  • Hozzáadták a "git branch —delete-merged 'origin/*' 'topic-*'" parancsot a helyi ágak csoportos biztonságos törléséhez, amelyek változásait már átvitték egy külső tárolóba. Az ágak és tárolók szűréséhez maszknak megfelelő használata megengedett. A törlésre jelölt jelöltek elemzéséhez, tényleges művelet végrehajtása nélkül, a "—dry-run" zászló használható.
  • Hozzáadták a "git refs create|update|delete|rename" parancsot, amely egyesíti az alacsony szintű műveleteket a hivatkozások létrehozására, törlésére, átnevezésére és frissítésére.
  • A "git bisect run" parancshoz hozzáadták a "—reset-when-found=[]" opciót, amely automatikusan visszaállítja a tárolót a keresés megkezdése előtti állapotába, vagy megőrzi a problémás commit-ot anélkül, hogy külön "git bisect reset" parancsot kellene futtatni.
  • A «git replay» parancshoz hozzáadva a «—linearize» flag, amely lehetővé teszi a lapos összefonódási topológia használatát, hasonlóan a «git rebase —no-rebase-merges» parancshoz, de anélkül, hogy a munkafát érintenénk.
  • A «git log —follow» parancsban megvalósult a fájlok átnevezésének nyomon követése a nem lineáris változás történetében, például ágak egyesítése esetén. A fájl útvonala mostantól külön van rögzítve minden szülő kötelező commit számára, így az eredmény független a commit-történet bejárásának sorrendjétől.
  • Lehetővé vált a «git repack -a —filter=blob:limit=1m —drop-filtered» parancs alkalmazása, amely nagy blob-objektumok eltávolítását célozza meg, amiket külső adattárból on-demand töltöttek be, és nem használnak az aktuális indexben. Ha ezekhez az objektumokhoz a jövőben hozzáférnek, automatikusan újra be lesznek töltve.
  • A «git log —graph» parancsban a több független gyökerű grafikonok esetében behúzások hozzáadására került sor a kapcsolódás nélküli commit-ok vizuális elkülönítése érdekében.
  • Biztosított a tipikus elírások azonosítása, mint például a «git push origin/main» helyett a «git push origin main» illetve a «git branch —set-upstream-to origin main» helyett a «git branch —set-upstream-to=origin/main» írásmód használata, és javaslat megjelenítése a helyes változat használatára.

Forrás: opennet.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