Verziókövetés felfedezése a Git használatával
A verziókövetési rendszereknek (VCS) különböző típusai vannak, de általában központosítottként és elosztottként kategorizálhatók. Az utóbbi években (részben a DevOps növekvő népszerűsége miatt) az utóbbi kategória jelentős népszerűségre tett szert, és a Git a modern szoftverfejlesztés de facto szabványává vált. Ez a konkrét VCS lenne a legmegfelelőbb választás a szervezet számára a mintaforgatókönyvben, különösen figyelembe véve, hogy a GitHubot szeretné használni a DevOps-áttűnés célplatformjaként. Ebben a leckében megismerheti a Git verziókövetésként való használatát.
Központosított és elosztott verziókövetés
A központi verziókövetési rendszerek (CVCS) és az elosztott verziókövetési rendszerek (DVCS) egyaránt lehetővé teszi a szoftverfejlesztési projektek változásainak kezelését és nyomon követését. Az elsődleges különbségek az adattárak és az együttműködés megvalósításának módjához kapcsolódnak. Főleg:
- adattár helye: Központosított rendszerekben az adattár egyetlen központi példánya található, amely a projekt teljes előzményeit tartalmazza. Az elosztott rendszerekben a csapattagok általában egy, teljes mértékben működőképes helyi másolattal rendelkeznek a teljes adattárról, beleértve annak teljes verzióelőzményeit is.
- Hálózati kapcsolat: A központosított rendszerekben az adattár központi példányához való hozzáférés számos művelet végrehajtásához szükséges, beleértve a frissítéseket és az előzmények lekérését is. Elosztott rendszerekben minden tevékenység elvégezhető az adattár helyi példányán.
- együttműködési modell: A központi rendszerekben a fejlesztők a módosítások végrehajtása és a módosítások véglegesítése előtt kivesznek fájlokat az adattár központosított példányából, miközben hálózathoz csatlakoznak. Ez megakadályozza, hogy mások kivehessenek fájlokat. Az elosztott rendszerekben a fejlesztők módosításokat hajtanak végre és véglegesítenek az adattár helyi példányán, amelyeket később más másolatokkal szinkronizálnak.
- elágaztatási és egyesítési modell: A központosított rendszerekben az elágaztatás és az egyesítés általában másokkal való koordinációt igényel. Elosztott rendszerekben az ágak egymástól függetlenül hozhatók létre a helyi példányokban, és később egyesíthetők.
Érdemes megjegyezni, hogy bár az elosztott modell nem támaszkodik központi adattárra (a hagyományos értelemben), gyakori, hogy az adattár egy példányát implementálja, amelyet olyan szolgáltatások üzemeltetnek, mint a GitHub, a GitLab vagy a Bitbucket. Ez az instance szolgál az együttműködés és a szinkronizálás fókuszpontjaként.
Git terminológia
Annak érdekében, hogy jártas legyen a Gittel való munkában, fontos, hogy megismerkedjen a terminológiájával. Egyes fogalmak egyediek a Git számára, megkülönböztetve azt a többi DVCS-től. A legalapvetőbb Git-kifejezések a következők:
- Munkafa: a projekt összes fájlját tartalmazó könyvtárstruktúra.
- adattár (más néven adattár): a munkafa legfelső szintjén található könyvtár, amely a projekt összes fájlját tartalmazza a fájlok verzióelőzményeivel együtt.
- Klónozás: a távoli adattár másolatának létrehozása egy helyi gépen, hogy egy projekten dolgozhasson, amelyhez hozzáféréssel rendelkezik.
- Fork: Egy távoli adattár GitHub-alapú másolatának létrehozása egy olyan projekten való munkához, amelyhez nincs hozzáférése. A forkolást általában akkor használják, ha valaki más projektjéhez kíván hozzájárulni, vagy saját verzióját szeretné létrehozni. Bár nem rendelkezik írási hozzáféréssel az eredeti adattárhoz, teljes mértékben kezelheti a saját adattárát.
- Véglegesítési: pillanatkép az adattárban lévő fájlokon egy adott időpontban végrehajtott módosításokról. A véglegesítések a módosítások rögzítésére és mentésére szolgálnak.
- előkészítési terület egy köztes helyet (amely nem része az adattárnak), ahol a munkafában lévő fájlok módosításai a véglegesítés előtt elő vannak készítve. Lehetővé teszi a fejlesztők számára, hogy kiválasztják a véglegesíteni kívánt módosításokat.
- branch: társított véglegesítések nevesített sorozata. Egyszerű értelemben az ág egy projekt különálló verzióját jelöli. Ez lehetővé teszi a projekt különböző részeinek egyidejű működését anélkül, hogy az hatással van a főverzióra. Az ágon belüli legutóbbi commit neve head. Az adattár inicializálásakor automatikusan létrehozott alapértelmezett ág neve fő vagy fő.
- egyesítése: az egyik ág módosításainak (vagy véglegesítésének) egy másikba való kombinálásának folyamata. Ez az egyik ág módosításait integrálja egy másikba.
- objektum: az adattárban elérhető négy entitástípus egyike. Ezek az entitások közé tartoznak a blobok, amelyek egyes fájlokat képviselnek, a fa, amely a munkafát képviseli, a commit, amely a munkafa egy adott verzióját képviseli, valamint egy *címke, amely egy egyéni commithez van rendelve.
- Hash: egy automatikusan létrehozott, egyedi, rögzített hosszúságú azonosító, amely egy objektum tartalmát reprezentálja. Amikor az objektum megváltozik, a kivonata is megváltozik. Ez lehetővé teszi a Git számára, hogy megállapítsa, melyik tartalom lett frissítve az adattárban.
- Távoli: egy másik (a helyien kívüli) adattárra mutató hivatkozás, amely általában az adattár szolgáltatás által üzemeltetett példányára mutat. Ez a leküldéses és lekéréses műveletek alapértelmezett értéke.
- Lekérés: az a művelet, amely lekéri és egyesíti a módosításokat egy távoli adattárból az aktuális ágba.
- Push: a helyi véglegesítéseket egy távoli adattárba küldő művelet, amely frissíti azt a helyi módosításokkal.
- beolvasása: az a művelet, amely a módosításokat egy távoli adattárból kéri le automatikus egyesítés nélkül. Ez lehetővé teszi a véleményezést az egyesítés alkalmazása előtt.
- lekéréses kérelem: a Git-alapú üzemeltetési platformok (például a GitHub) egyik funkciója, amely lehetővé teszi a fejlesztők számára, hogy módosításokat javasoljanak, és kérjék, hogy egyesítsük őket egy célágba.
A Git számos parancsot is tartalmaz, amelyek lehetővé teszik a verziókövetés teljes körű implementálását és kezelését a parancshéjon keresztül, például Linux Bash vagy Windows parancssor használatával. Másik lehetőségként a Gitet asztali alkalmazásokon, például a GitHub Desktopon keresztül is kezelheti. A Git-alapú üzemeltetési platformok olyan webes felületet biztosítanak, amely megkönnyíti a szolgáltatásoldali adattárakkal való interakciót.
Git és GitHub
A korábban leírtak szerint a Git egy többplatformos, nyílt forráskódú DVCS, amely helyi adattárak használatával segíti elő az együttműködést, amely távoli adattárakkal szinkronizálható. A GitHub egy felhőalapú szolgáltatás, amely üzemeltetési platformot biztosít a Git-adattárakhoz. Kibővíti a Git-képességek körét a következők támogatásával:
- távoli adattárak: az elosztott csapatok közötti interakció megkönnyítése.
- Együttműködési eszközök: olyan funkciók biztosítása, mint a feladatok, vitafórumok, lekéréses kérelmek, értesítések, címkék, műveletek, ágak, wikik és projektek.
- webes felület: a Git-parancsok használatának minimálisra minimalizálása
- Ágvédelem: olyan feltételek biztosítása, amelyeket teljesíteni kell az egyesítés előtt (például a befejezett pull requestek felülvizsgálata).