Gyakorlati alapok II.
A szoftverfejlesztés
Verziókövetés (verziókontroll)
Az alábbi fejezet Sallay András informatikatanár oktatási anyagára támaszkodik (www.szit.hu)
A verziókontroll vagy verziókövetés, esetleg verziókezelés; a programok verzióival való foglalkozást
jelenti. Természetesen nemcsak
programokról lehet szó, hanem bármilyen állományról.
Rövidítései:
VCS - Version Control System
SCM - Source Code Management
(Az SCM rövidítést a logisztikában is használják, Supply Chain Management,
azaz ellátási lánc-menedzsmentként.)
Ha egy program készítése során jól strukturált könyvtárszerkezetet hozunk
létre és következetesek vagyunk karbantartásában, akkor mindenféle
verziókövető program nélkül is elboldogulhatunk a program további verzióinak
menedzselésében.
Ha viszont egy projektben másokkal kell együtt dolgoznunk, akkor nagyon jó szolgálatot fog nyújtani egy verziókövető rendszer.
Köztes megoldásként persze gondolkodhatunk egy közös FTP-tárhelyre,
ahova mindenki feltölti saját változatát, ez azonban előbb-utóbb káoszhoz szokott
vezetni. Ezért találták ki a verziókövető rendszereket.
A verziókövető rendszerek nyomon követik, hogy ki, mikor és hol tett fel újabb
programverziót. Egyúttal megőrzi az előző változatokat is, amelyekre bármikor visszaválthatunk.
Forrás - Source: www.szit.hu
Alapfogalmai:
repository - a mentésre kerülő állományok mentési helye,
branch - változat, elágazás,
tag - egy változat megjelölése, például fontossága miatt,
commit - egy változat elhelyezése a tárolóban,
merge - 2 változat összefésülése,
checkout - váltás másik változatra (branch), néhol eltérő a használata.
Osztályozása:
Forrás - Source: www.szit.hu
Megvalósítások:
Rendszer
nyílt forrású, központosított:
SVN
CVS (Subversion)
nyílt forrású, elosztott:
Git
Bazar
Mercurial
zárt forrású, központosított:
Perforce - kereskedelmi
zárt forrású, elosztott:
BitKeeper
A Git egy elosztott verziókövető rendszer. Angolul Decentralized
Version Control System (DVCS), de a Distributed Version Control System
rövidítésének is tartják. Ez azt jelenti, hogy a felhasználó nemcsak az
aktuális verziót tartja a gépén, hanem az egész tároló (repository)
tartalmát, ellentétben a központosított rendszerekkel. Ennek az a
behozhatatlan előnye,
hogy hálózat nélkül, offline üzemmódban is tudunk dolgozni, munkánkat
pedig bármikor szinkronizálhatjuk egy központi tárolóval.
Az SVN és más hasonló verziókövető rendszerek központosított verziókövető
rendszerek. Angolul Centralized Version Control Systems (CVCS). A CVCS
alapú rendszerek a commit-okat alapértelmezésben a rendszerbekerüléshez
viszonyítják, a Git esetén azonban ez nem így működik: a Git
pillanatnyi állapotokat (snapshot) tárol.
A Git-et eredetileg a Linux-projekt számára hozta létre Linus
Torvalds. Alkalmas nagy projektek használatára. A Git-tel parancssorban
dolgozunk, de rendelkezésre áll néhány grafikus felületű változata is.
Összehasonlítás más verziókövetőkkel
A Git-rendszer eltér más verziókövető rendszerek működésétől (Subversion,
Perforce). A legfőbb különbség az adatok kezelésében van. Más
verziókövető rendszerek minden állományról készítenek egy mentést, a Git
ezzel szemben nem tárol el egy állományt, ha az nem változott, hanem
csak egy mutatót hoz létre az előző verzióra.
Forrás - Source: www.szit.hu
Vannak rendszerek, amelyek az állományok egy részéről készítenek másolatot. A Git csakis a változtatott állományról, de az adott állomány egész részéről.
A Git alapfogalmai:
kommit - a fájlokról elmentett pillanatkép. Érdemes úgy megválasztani kommitjainkat, hogy a logikailag összetartozó egységeket együtt kommitoljuk. A Git-rendszerben commit alparanccsal használjuk. A kommit a legelemibb tárolandó egység. Érdemes minél sűrűbben kommitolni,
branch - a fejlesztés egy ága. Amikor készítünk egy projektet és azt a Git-be helyezzük, lesz egy fő (master) branch-ünk. Ebből újabb branch-eket hozhatunk létre. A háttérben egy branch létrehozása egy mutató az utolsó állapotra. Egy branch tulajdonképpen kommitok összessége,
clone - távoli gépről másolatot készíthetünk egy branch-ről,
checkout - a branch-ek közötti váltásra használható,
push - a központi szerverrel való szinkronizálás parancsa,
head - mutató, amely munkáink során az aktuális branch-ra mutat,
munkakönyvtár - az a könyvtár, amelyben létrehozzuk forrásállományainkat és ahol rajtuk dolgozunk. Ez tulajdonképpen a projektkönyvtár,
stage - átmeneti tárolóhely. A létrehozott vagy módosított állományokat a stage helyre kell helyeznünk, ha szeretnénk őket követett (tracked) állapotba tenni,
repository - tároló, ahol a fájlok tárolásra kerülnek. A helyi gépen a tároló valójában a .git könyvtárban van. A távoli szerveren, egy .git kiterjesztésű könyvtár a szokásos tárolási hely,
helyi tároló - a munkakönyvtár, a stage és a repository együttese,
upstream - távoli tároló, ahova mindenki feltölt,
downstream - lokális tároló, ahol dolgozunk,
fájlok állapota - a munkakönyvtárunkban alapvetően kétféle lehet:
untracked - nem követett,
tracked - követett,
modified - módosult a commit óta,
unmodified - nem módosult a commit óta,
staged - a legközelebbi commit esetén tárolásra kerül.
Forrás - Source: www.szit.hu
A programozók egyik kedvelt ingyenes verziókövető Git-tárolója a github.com.
Ha van kis időnk, látogassunk el oda!
A szoftverek verziószám-adási konvencióiról A szoftver használatba való bevezetése című fejezetben olvashatunk.