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 583 változtatást fogadtak el, amelyet 84 fejlesztő készített, közülük 32-en vettek részt először a fejlesztésben. :
- Közelít a stabilizáláshoz és a teljes készenléthez a részleges klónozás lehetősége, amely lehetővé teszi, hogy csak egy részét másoljuk át az adatoknak, és egy hiányos másolattal dolgozzunk. Szokásos klónozáskor a repozitóriumból minden adat átmásolódik, beleértve az egyes fájlok minden változatát a módosítási történetből. Nagyon nagy repozitóriumok esetén az adatok másolása jelentősen növeli a forgalmat és a lemezterületet, még akkor is, ha a fejlesztőt csak a fájlok egy részhalmaza érdekli. A forráskódok munkafájának részleges megtekintésének egyszerűsítése érdekében az új verzióban egy kísérleti parancsot, a „sparse-checkout”-ot és egy új „—sparse” opciót javasolnak a „clone” parancshoz.
Korábban a részleges klónozás folyamata az alábbiak szerint zajlott: a felesleges tartalom kiszűrésére és a „—no-checkout” opció az eltávolítandó fájlok kiegészítésének letiltására. Ezt követően a checkout művelet végrehajtása előtt be kellett állítani a core.sparseCheckout beállítást, és a .git/info/sparse-checkout fájlban fel kellett tüntetni az eltávolítandó útvonalak mintáit. Például, a blobok nélküli klónozás és a fájlok kiemelésének tiltása a 2-es vagy annál nagyobb mélységű almappákból így valósítható meg:
git clone —filter=blob:none —no-checkout /your/repository/here repo
$ cd repo
$ cat >.git/info/sparse-checkout <EOF
/*
!/*
EOF
$ git config core.sparseCheckout 1
$ git checkout .Az új „git sparse-checkout” parancs jelentősen egyszerűsíti a munkát és a hiányos repozitóriummal való munkát az alábbi parancsokkal összesíti:
git clone —filter=blob:none —sparse /your/repository/here repo
git sparse-checkout set /path/to/check/outA sparse-checkout parancs lehetővé teszi az útvonalak listájának beállítását a checkout számára (set) anélkül, hogy manuálisan kellene beállítani a .git/info/sparse-checkout-t, valamint a jelenlegi útvonalak listájának megjelenítését (list) és a részleges checkout-ok engedélyezését vagy letiltását (enable/disable).
Nagyon nagy repozitóriumok és minta listák kezelésének optimalizálása érdekében a „A megengedett sablonokat korlátozó opció (az önkényes .gitignore sablonok helyett megadható, hogy minden elérési utat és fájlt ki kell-e nyerni a megadott alkönyvtárban). Például, ha egy nagy repóban van egy "A/B/C" könyvtár, és minden munka a "C" alkönyvtárra összpontosul, akkor a sparseCheckoutCone mód bekapcsolásával a "git sparse-checkout set A/B/C" parancs teljes mértékben kijelzi a "C" tartalmát, de "A"-ból és "B"-ből csupán a "C"-vel való munkához szükséges elemeket.
- A dokumentációból („git rebase -h”) eltávolították az „—preserve-merges” opcióra vonatkozó összes említést, amely elavultnak van nyilvánítva, és helyette a commitok áthelyezéséhez az „«.
- A patch-üzenetek olvashatóságának javítása érdekében, amelyeket a levelezőlistákra küldenek, hozzáadták az „git format-patch —cover-from-description subject” opciót, amelynél a patchcsoport kísérőlevelének témájaként a szakasz első bekezdése kerül felhasználásra.
- Megvalósították az „git apply —3way” parancs és a „merge.conflictStyle” beállítás együttes alkalmazásának támogatását (az „git apply” mostantól figyelembe veszi a merge.conflictStyle konfliktusleírási stílusát, ha a patch fájl alkalmazása utáni konfliktus feloldása szükséges).
- A funkciók meghatározására vonatkozó kód, amelyet olyan műveletekben használnak, mint a „git diff/grep —show-function/—function-context”, kiterjesztésre került a funkcióhatárok meghatározásának támogatásával a programozási nyelvek esetén. .
- Az „git add”, „git commit”, „git reset” és egyéb parancsokhoz hozzáadták az új „—pathspec-from-file” opciót, amely lehetőséget biztosít fájlból vagy bemeneti áramlásból elérési utak listájának betöltésére a parancssorbeli felsorolás helyett.
- Megoldották a könyvtárszintű átnevezések meghatározásának problémáját a commitok rögzítésekor. A meghatározás nem működött, ha az alkönyvtár tartalmát a repó gyökerébe mozgatták.
- Elkészült a felújított „git add -i” parancs kezdeti megvalósítása, amely lehetővé teszi a módosított tartalom interaktív módon való hozzáadását, Perl-ről C-re átírt változat. Ezen kívül hasonló újraírás alatt áll a „git add -p” parancs is.
- A „git log —graph” parancs refaktorálásra került, amely ASCII ábrát hoz létre a repó változásait történetéről. Az újraírás jelentősen javította és egyszerűsítette a kimenetet anélkül, hogy torzítaná a történet struktúráját, amely például megoldotta a grafikon kilépésének problémáját a terminál sorainak szélességéből.
- A «git log —format=..» opció, amely lehetővé teszi a kimenet formátumának megváltoztatását,
kibővült az «l/L» zászlók támogatásával, amelyek lehetővé teszik, hogy csak az email cím azon részét jelenítsük meg, amely a «@» jel előtt található (például hasznos, amikor minden fejlesztő email címe ugyanabban a tartományban van). - A «git submodule» parancshoz hozzáadva a «set-url» alsóparancs.
- A tesztcsomagok frissítve lettek az átállás előkészítéseként
az SHA-2 hash algoritmusra a SHA-1 helyett.
Forrás: opennet.ru
