Git 2.35-os forrásvezérlő kiadás

Két hónapos fejlesztés után megjelent a Git 2.35 elosztott forrásvezérlő rendszer. 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ége és a visszamenőleges változtatásokkal szembeni ellenállás biztosítása érdekében 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 kötelezettségvállalások hitelesítésére a fejlesztők digitális aláírásával.

Az előző kiadáshoz képest az új verzió 494 változtatást tartalmazott, 93 fejlesztő részvételével készült, ebből 35 először vett részt a fejlesztésben. Főbb újítások:

  • Bővültek az SSH-kulcsok Git-objektumok digitális aláírására való felhasználásának lehetőségei. Több kulcs érvényességi idejének korlátozása érdekében hozzáadták az OpenSSH „érvényes-előtte” és „érvényes-utána” direktíváit, amelyekkel az aláírások megfelelő működését biztosíthatjuk, miután valamelyik fejlesztő elforgatta a kulcsot. Ezt megelőzően probléma volt az aláírások elválasztásával a régi és az új kulccsal - ha törli a régi kulcsot, nem lehet ellenőrizni a vele készült aláírásokat, és ha elhagyja, akkor továbbra is lehetséges hozzon létre új aláírásokat a régi kulccsal, amelyet már lecseréltek egy másik kulccsal. Az érvényes-előtte és az érvényes-utána paraméterekkel elkülönítheti a kulcsok hatókörét az aláírás létrehozásának időpontja alapján.
  • A merge.conflictStyle beállításban, amely lehetővé teszi az összevonás során az ütközések információinak megjelenítési módjának kiválasztását, megjelent a „zdiff3” mód támogatása, amely az ütközés elején vagy végén megadott összes szabványos sort az ütközésen kívülre helyezi. terület, amely lehetővé teszi az információk tömörebb bemutatását.
  • A „--stage” mód hozzáadásra került a „git stash” parancshoz, amely lehetővé teszi, hogy csak az indexhez hozzáadott változtatásokat rejtse el, például olyan helyzetben, amikor ideiglenesen el kell halasztani néhány összetett változtatást, hogy először adjuk hozzá, ami már készen van, és egy idő után foglalkozz a többivel. A mód hasonló a „git commit” parancshoz, csak az indexben elhelyezett változtatásokat írja ki, de ahelyett, hogy új véglegesítést hozna létre a „git stash —staged”-ben, az eredmény a stash ideiglenes területen kerül tárolásra. Amint szükség van a változtatásokra, a „git stash pop” paranccsal visszaállíthatók.
  • A "git log" parancshoz egy új formátumspecifikátor került, a "-format=%(describe)", amely lehetővé teszi a "git log" és a "git description" parancs kimenetének kombinálását. A "git description" paraméterei közvetlenül a specifikáción belül vannak megadva ("-format=%(describe:match= ,kizárás= )"), amelybe rövidített címkéket is beilleszthet ("—format=%(describe:tags= )"), és állítsa be a hexadecimális karakterek számát az objektumok azonosításához (“—format=%(describe:abbrev= )"). Például az utolsó 8 véglegesítés felsorolásához, amelyek címkéihez nem tartozik kiadásjelölt címke, és megadhatja a 8 karakteres azonosítókat, használja a következő parancsot: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643ab. 2-gb95bd 94bbc056f2.34.1 v642-56-gffb95f8d v7-2.34.1- gdf203c9adeb2980902 v2.34.1-640-g3b41a212
  • A user.signingKey beállítás mostantól támogatja az új típusú kulcsokat, amelyek nem korlátozódnak az „ssh-” típusra, és megadják a kulcs teljes fájlútvonalát. Alternatív típusok a "key::" előtag használatával adhatók meg, például "key::ecdsa-sha2-nistp256" az ECDSA kulcsokhoz.
  • Érezhetően megnőtt a változási lista létrehozásának sebessége a „—histogram” módban, valamint a „-color-moved-ws” opció használatakor, amely a színkülönbségben lévő szóközök kiemelését szabályozza.
  • A "git jump" parancs, amely arra szolgál, hogy a Vim információkat adjon meg a pontos ugrásról a fájl kívánt pozíciójára az összevonási ütközések elemzése, a különbségek megtekintése vagy a keresési műveletek során, lehetővé teszi a lefedett összevonási konfliktusok szűkítését. Például, ha csak a "foo" könyvtárra szeretné korlátozni a műveleteket, megadhatja a "git jump merge - foo" parancsot, és kizárhatja a "Documentation" könyvtárat a feldolgozásból - "git jump merge - ':^Documentation'"
  • Dolgoztak a "size_t" típus használatának szabványosításán az "unsigned long" helyett az objektumok méretét jelző értékeknél, ami lehetővé tette a "clean" és "smudge" szűrők használatát 4 GB-nál nagyobb fájloknál. minden platformon, beleértve az LLP64 adatmodellel rendelkező platformokat is, az „unsigned long” típus, amelyben 4 bájtra korlátozódik.
  • Az „-empty=(stop|drop|keep)” opció hozzáadásra került a „git am” parancshoz, amely lehetővé teszi a javításokat nem tartalmazó üres üzenetek viselkedésének kiválasztását a javítások postafiókból történő elemzésekor. A „stop” érték leállítja a teljes javítási műveletet, a „drop” kihagyja az üres javítást, a „keep” pedig üres véglegesítést hoz létre.
  • Részleges indexek (ritka index) támogatása a "git reset", "git diff", "git blame", "git fetch", "git pull" és "git ls-files" parancsokhoz a teljesítmény javítása és a helytakarékosság érdekében. adattárak , amelyekben részleges klónozási műveleteket (sparse-checkout) hajtanak végre.
  • A "git sparse-checkout init" parancs elavult, és a "git sparse-checkout set" parancsot kell helyettesíteni.
  • Hozzáadott egy új "reftable" háttérprogram kezdeti megvalósítása hivatkozások, például ágak és címkék tárolására a tárolóban. Az új háttérrendszer a JGit projekt által használt blokktárolást használja, és nagyon nagy számú hivatkozás tárolására van optimalizálva. A háttérrendszer még nincs integrálva a refs rendszerrel, és nem áll készen a gyakorlati használatra.
  • A "git grep" parancs színpalettáját a GNU grep segédprogramhoz igazították.

Forrás: opennet.ru

Hozzászólás