a forráskódok elosztott kezelésének rendszere . A Git az egyik legnépszerűbb, megbízható és nagy teljesítményű verziókezelő rendszer, amely rugalmas, nem lineáris fejlesztési eszközöket kínál, amelyek az elágazásokra és a branch-ök egyesítésére alapoznak. A történet integritásának és a 'visszamenőleges' módosításokkal szembeni ellenállásának biztosítása érdekében minden egyes commitban a teljes korábbi történet implicit hash-elése történik, továbbá a fejlesztők digitális aláírási hitelesítése is lehetséges egyes címkék és commitok számára.
A legutóbbi kiadáshoz képest az új verzióba 504 változtatást fogadtak be, 64 fejlesztő közreműködésével, akik közül 12-en először vettek részt a fejlesztésben. :
- Alapértelmezett átállás történt a Git kommunikációs protokolljából, amely a Git-kiszolgálóhoz való távoli csatlakozáskor használatos. A protokoll második verziója figyelemre méltó a szerveroldali ágazatok és címkék szűrésének lehetőségével, amely lehetővé teszi a kliens számára, hogy rövidített linklistát kapjon vissza. Korábban bármely pull parancs végrehajtásakor a kliens mindig a teljes repo linklistáját megkapta, még akkor is, ha a kliens csupán egy elágazást frissített vagy ellenőrizte a saját repo másolatának aktualitását. Egy másik figyelemre méltó újítás a protokollhoz új funkciók hozzáadásának lehetősége a támogatott eszközök új funkcióinak megjelenésével. A kliens kódja továbbra is kompatibilis a régi protokollal, és továbbra is működhet új és régi szerverekkel, automatikusan visszaállva az első verzióra, ha a szerver nem támogatja a másodikat.
- A "git config" command has been added with the option "—show-scope" which simplifies the identification of where certain settings are defined. Git allows settings to be defined in various places: in the repository (.git/info/config), in the user directory (~/.gitconfig), in the system-wide configuration file (/etc/gitconfig), as well as through command-line options and environment variables. When executing "git config", it can be quite challenging to understand exactly where the desired setting is defined. Previously, the available option "—show-origin" only showed the path to the file where a setting was defined, which is useful if the intent is to edit the file, but does not help when changing the value via "git config" using the options "—system", "—global", or "—local". The new option "—show-scope" displays the context of variable definitions and can be used in conjunction with —show-origin.
$ git —list —show-scope —show-origin
global file:/home/user/.gitconfig diff.interhunkcontext=1
global file:/home/user/.gitconfig push.default=current
[…]
local file:.git/config branch.master.remote=origin
local file:.git/config branch.master.merge=refs/heads/master$ git config —show-scope —get-regexp ‘diff.*’
global diff.statgraphwidth 35
local diff.colormoved plain$ git config —global —unset diff.statgraphwidth
- In binding settings it is allowed to use masks in URLs. Any HTTP settings and credentials in Git can be set for all connections (http.extraHeader, credential.helper) as well as for connections bound to a URL (credential.https://example.com.helper, credential.https://example.com.helper). Until now, the use of masks such as *.example.com was permitted only for HTTP settings, but was not supported for credential binding. With Git 2.26, these differences have been removed, and for binding a username to all subdomains, it is now possible to specify:
[credential "https://*.example.com"]
username = ttaylorr
- The experimental support for partial cloning has continued to expand, allowing only part of the data to be transferred and working with an incomplete copy of the repository. The new release includes a new command "git sparse-checkout add", which allows adding individual directories for applying the checkout operation only to part of the working tree, instead of listing all such directories at once through the command "git sparse-checkout set" (you can add one directory at a time, without re-specifying the entire list each time).
Például a git/git tároló klónozásához blobok átvitele nélkül, a munkakópia gyökérkönyvtárának korlátozásával és a «t» és «Documentation» könyvtárak külön címkézésével a következő paranccsal lehet megadni:$ git clone —filter=blob:none —sparse git@github.com:git/git.git
$ cd git
$ git sparse-checkout init —cone$ git sparse-checkout add t
….
$ git sparse-checkout add Documentation
….
$ git sparse-checkout list
Dokumentáció
t - Jelentősen megnövekedett a «git grep» parancs teljesítménye, amely a tároló aktuális tartalmának és a történeti revízióinak keresésére szolgál. A keresés felgyorsítása érdekében megengedett a munkakönyvtár tartalmának több szálon történő bejárása («git grep —threads»), de a történeti revíziók keresése egy szálon zajlott. Most ezt a korlátozást a tárolóobjektumokból való olvasási műveletek párhuzamosításának lehetőségének megvalósításával megszüntették. Alapértelmezés szerint a szálak száma megegyezik a CPU magok számával, így a többség esetében már nem szükséges a «—threads» opció explicit megadása.
- Hozzáadták a «git worktree» parancs alparancsainak, útvonalainak, hivatkozásainak és egyéb argumentumainak automatikus kiegészítésére vonatkozó támogatást, amely lehetővé teszi a tároló több munkakópijával való munkát.
- Hozzáadták a ragyogó színek támogatását, amelyekhez ANSI escape szekvenciák állnak rendelkezésre. Például a színezési beállításokhoz «git config —color» vagy «git diff —color-moved» esetén az opció «—format» számára a világoskék esetében «%C(brightblue)» -t adhatunk meg.
- Hozzáadták az új verziót a , amely integrációt biztosít a mechanizmussal a fájlok módosításának és új fájlok megjelenésének nyomon követésének felgyorsítása érdekében. A git frissítése után a horgot a tárolóban.
- Optimalizálások kerültek hozzáadásra a részleges klónozási műveletek felgyorsítására, a bitképek alkalmazásával
(bitmap machinery), hogy elkerüljék az összes objektum teljes végigjárását a kiszűrés alatt. A blobok ellenőrzése (—filter=blob:none és —filter=blob:limit=n) a részleges klónozás során most már jelentősen gyorsabban történik.
A GitHub bejelentette, hogy alkalmazza ezeket a patch-eket a fent említett optimalizációkkal és kísérleti támogatást nyújt a részleges klónozás számára. - A "git rebase" parancs átkerült egy másik backendre, amely alapértelmezés szerint a 'merge' mechanizmust használja (korábban a 'rebase -i' használatára volt beállítva) a 'patch+apply' helyett. A back-endek néhány dologban eltérnek, például a konfliktus eltávolítása után folytatva a műveletet (git rebase --continue), az új backend felajánlja a commit üzenetének szerkesztését, míg a régi egyszerűen a régi üzenetet használta. A régi viselkedés visszaállításához használja a '--apply' opciót, vagy állítsa be a 'rebase.backend' konfigurációs változót 'apply' értékre.
- A .netrc fájlon keresztül meghatározott hitelesítési paraméterek kezelőjének példája elérhető dobozból használható formában.
- Bevezetésre került a gpg.minTrustLevel beállítás, amely lehetővé teszi a minimális bizalmi szint megadását a digitális aláírás ellenőrzését végző különböző elemekhez.
- A "git rm" és "git stash" parancsokhoz hozzáadva lett a "--pathspec-from-file" opció.
- Tovább folytatódik a tesztesetek korszerűsítése a SHA-2 hash algoritmusra való áttérés előkészítéseként a SHA-1 helyett.
Forrás: opennet.ru
