Az elosztott forrás vezérlőrendszer Git 2.26 kiadása

Elérhető az elosztott forrásvezérlő rendszer kiadása git 2.26.0. A Git az egyik legnépszerűbb, legmegbízhatóbb és nagy teljesítményű verziókezelő rendszer, amely rugalmas, elágazáson és összevonáson alapuló, nem lineáris fejlesztői eszközöket biztosít. Az előzmények sértetlenségének és a visszamenőleges változtatásokkal szembeni ellenállás biztosítására minden commit során a teljes korábbi előzmény implicit kivonatolása történik, valamint lehetőség van az egyes címkék és commitok hitelesítésére is a fejlesztők digitális aláírásával.

A 504 fejlesztő közreműködésével készült új verzióba az előző kiadáshoz képest 64 változtatást fogadtak el, ebből 12 először vett részt a fejlesztésben. A főbb innovációk:

  • Az alapértelmezettre váltott második változat Git kommunikációs protokoll, amelyet akkor használnak, amikor egy kliens távolról csatlakozik egy Git-kiszolgálóhoz. A protokoll második verziója arról nevezetes, hogy lehetőséget biztosít az ágak és címkék szerveroldali szűrésére, és a hivatkozások rövidített listáját adja vissza a kliensnek. Korábban minden pull parancs mindig elküldte az ügyfélnek a teljes lerakatban található hivatkozások teljes listáját, még akkor is, ha az ügyfél csak egy ágat frissített, vagy ellenőrizte, hogy a lerakat másolata naprakész-e. Egy másik figyelemre méltó újítás az a lehetőség, hogy új képességekkel bővíthető a protokoll, amint új funkciók elérhetővé válnak az eszköztárban. Az ügyfélkód továbbra is kompatibilis a régi protokollal, és továbbra is működhet az új és a régi szerverekkel is, automatikusan visszaáll az első verzióra, ha a szerver nem támogatja a másodikat.
  • A „-show-scope” opció hozzáadásra került a „git config” parancshoz, megkönnyítve annak azonosítását, ahol bizonyos beállításokat meghatároztak. A Git lehetővé teszi a beállítások megadását különböző helyeken: a tárolóban (.git/info/config), a felhasználói könyvtárban (~/.gitconfig), a rendszerszintű konfigurációs fájlban (/etc/gitconfig) és parancsokon keresztül. vonalopciók és környezeti változók. A „git config” végrehajtásakor meglehetősen nehéz megérteni, hol van pontosan meghatározva a kívánt beállítás. A probléma megoldásához elérhető volt a „--show-origin” opció, de ez csak a beállítást definiált fájl elérési útját mutatja, ami hasznos, ha szerkeszteni szeretné a fájlt, de nem segít, ha módosítania kell az értéket a „git config” segítségével a „--system”, „--global” vagy „-local” opciókkal. Az új "--show-scope" opció megjeleníti a változódefiníciós kontextust, és a -show-origin paraméterrel együtt használható:

    $ git --list --show-scope --show-origin
    globális fájl:/home/user/.gitconfig diff.interhunkcontext=1
    globális fájl:/home/user/.gitconfig push.default=current
    […] helyi fájl:.git/config branch.master.remote=origin
    helyi fájl:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    globális diff.statgraphwidth 35
    helyi diff.colormoved sima

    $ git config --global --unset diff.statgraphwidth

  • A kötési beállításokban hitelesítő adatok A maszkok használata az URL-ekben megengedett. A Gitben bármilyen HTTP-beállítás és hitelesítési adat beállítható mind az összes kapcsolathoz (http.extraHeader, credential.helper), mind az URL-alapú kapcsolatokhoz (credential.https://example.com.helper, credential.https: //example). com.helper). Eddig a helyettesítő karakterek, például a *.example.com, csak a HTTP-beállításokhoz voltak engedélyezve, de a hitelesítő adatok összerendelése nem támogatott. A Git 2.26-ban ezek a különbségek megszűntek, és például a felhasználónév minden aldomainhez való kötéséhez most megadhatja:

    [hitelesítő adat "https://*.example.com"]

    felhasználónév = ttaylorr

  • A részleges klónozás (részleges klónozás) kísérleti támogatásának kiterjesztése folytatódik, lehetővé téve az adatok csak egy részének átvitelét, és a repository hiányos másolatával való munkát. Az új kiadás hozzáad egy új "git sparse-checkout add" parancsot, amely lehetővé teszi egyedi könyvtárak hozzáadását a "checkout" művelet csak a munkafa egy részére történő alkalmazásához, ahelyett, hogy az összes ilyen könyvtárat egyszerre listázná a "git" paranccsal. ritka checkout set" (egyenként hozzáadhat egy könyvtárat anélkül, hogy minden alkalommal újra megadná a teljes listát).
    Például egy git/git tárház klónozásához blobok végrehajtása nélkül, a kijelentkezés csak a munkapéldány gyökérkönyvtárára korlátozva, és külön megjelölve a kijelentkezést a "t" és a "Documentation" könyvtárak számára, a következőket adhatja meg:

    $ git klón --filter=blob:none --sparse [e-mail védett]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git ritka-pénztár hozzá t
    ....
    $ git sparse-checkout dokumentáció hozzáadása
    ....
    $ git ritka pénztári lista
    Dokumentáció
    t

  • Jelentősen javult a „git grep” parancs teljesítménye, amely mind a lerakat aktuális tartalmában, mind a korábbi változatokban kereshet. A keresés felgyorsítása érdekében a munkafa tartalmát több szálon is át lehetett vizsgálni („git grep –szálak”), de a történeti változatokban a keresés egyszálas volt. Most ezt a korlátozást megszüntettük azáltal, hogy megvalósítottuk az olvasási műveletek párhuzamosítását az objektumtárolóból. Alapértelmezés szerint a szálak száma megegyezik a CPU magok számával, ami a legtöbb esetben most már nem igényli a „-threads” opció kifejezett beállítását.
  • Hozzáadott támogatás az alparancsok, útvonalak, hivatkozások és a „git worktree” parancs egyéb argumentumai bevitelének automatikus kiegészítéséhez, amely lehetővé teszi a tár több munkapéldányával való munkát.
  • Hozzáadott támogatás az élénk színekhez, amelyek ANSI escape szekvenciákkal rendelkeznek. Például a „git config –color” vagy a „git diff –color-moved” kiemelési színek beállításainál megadhatja a „%C(brightblue)” értéket a „--format” opcióval a világoskékhez.
  • A szkript új verziója hozzáadva fsmonitor-watchman, amely integrációt biztosít a mechanizmussal Facebook Watchman a fájlváltozások követésének és az új fájlok megjelenésének felgyorsítása érdekében. Frissítés után git szükséges helyettesít horog az adattárban.
  • Hozzáadott optimalizálás a részleges klónozás felgyorsítása érdekében bittérképek használatakor
    (bitmap gépezet), hogy elkerülje az összes objektum teljes keresését a kimenet szűrésekor. A részleges klónozás során a blobok (—filter=blob:none és —filter=blob:limit=n) ellenőrzése megtörténik
    lényegesen gyorsabb. A GitHub javításokat jelentett be ezekkel az optimalizálással és kísérleti támogatással a részleges klónozáshoz.

  • A „git rebase” parancs átkerült egy másik háttérrendszerbe, amely az alapértelmezett „merge” mechanizmust használja (korábban a „rebase -i”-hez használt) a „patch+apply” helyett. A háttérprogramok némileg különböznek egymástól, például egy ütközés feloldása utáni művelet folytatása után (git rebase --continue) az új háttérrendszer felajánlja a véglegesítési üzenet szerkesztését, míg a régi egyszerűen a régi üzenetet használta. A régi viselkedéshez való visszatéréshez használja a „--apply” opciót, vagy állítsa a „rebase.backend” konfigurációs változót „apply” értékre.
  • Egy példa a .netrc-n keresztül megadott hitelesítési paraméterek kezelőjére egy olyan formára redukáltunk, amely alkalmas az azonnali használatra.
  • Hozzáadtuk a gpg.minTrustLevel beállítást a minimális megbízhatósági szint beállításához a digitális aláírás ellenőrzését végző különféle elemekhez.
  • A „--pathspec-from-file” opció hozzáadva a „git rm”-hez és a „git stash”-hez.
  • A tesztkészletek fejlesztése tovább folytatódott az SHA-2 helyett az SHA-1 kivonatoló algoritmusra való átállás előkészítéseként.

Forrás: opennet.ru

Hozzászólás