Tartalom

Git Egylet - verziókezelésről egyszerűen


A projekt célja a verziókezelés bemutatása magyar nyelven. Felfogható, hogy a

ScottChacon and Ben Straub. 2014. Pro Git (2nd. ed.). Apress, USA.

könyv bizonyos fejezeteinek a szabadfordítása.

Részletek a jegyzetből

A verziókezelő (Version Control System – VCS) egy szoftverrendszer, amely rögzíti a változásokat a fájlokon az idő folyamán. Programozói szemszögből ezek a fájlok programkódot tartalmaznak, de kb. mindent is lehet kezelni. Minden változtatás az előző állapothoz képest kerül meghatározásra inkrementálisan, így könnyű az állapotok között váltani, visszavonni egy vagy több változtatást.

Amennyiben feltételezzük, hogy egy projekten több fejlesztő dolgozik, két fajta verziókezelő szoftvert különböztethetünk meg: elosztott és centralizált. Centralizált esetben egy ún. központi repository létezik egy szerveren, minden fejlesztő onnan kéri el az aktuális állapotot és oda küldi be a módosításait. Csak ez a központi állapot létezik.

Az elosztott verziókezelőkről pedig a projekt további része szól.

Elosztott verziókezelés

Elosztott verziókezelés során is létezik egy központi repository, mely tárolja az állapotokat és a teljes historyt. Ebben az esetben a kliensek nem csak az aktuális állapotot kérik el a központi szervertől, hanem a teljes historyval együtt egy tükörképet kapnak meg. Amennyiben a központi szerver elérhetetlenné válik bármilyen oknál fogva, a kliensek birtokában van minden állomány a veszteségmentes visszaállításhoz.

/files/01-elosztott-verziokezelo.png
Elosztott verziókezelő. Forrás: [1]

Mi az a Git?

Röviden: A Git egy elosztott verziókezelő szoftver.

Fentebb leírásra került, hogyan is működik egy verziókezelő, mit tárol. A Git egy miniatűr fájlrendszerként képzeli el a saját életét, melyben állapotok folyamát tárolja. Minden esetben, amikor egy állapotot mentünk, a Git az egész projektről készít egy snapshotot, viszont a nem változott fájlokat nem tárolja le újra. Ezen fájlok az előző snapshot megfelelő fájljára mutatnak.

Így, amennyiben letöltjük a legújabb állapotot a szerverről (legyen ez most Version 5), akkor az tudja magáról, hogy milyen fájlok módosultak az előző állapothoz képest (Version 4), de azokról a fájlokról is van információja, melyek a két verzió között nem módosultak. A 4-es verzió is tudja magáról, hogy milyen módosításokat tárol és milyen fájlok nem módosultak. Ha ezt a láncot a legelső állapottól kezdve végig vezetjük az 5-ös verzióig, akkor megkapjuk a projekt jelenlegi állapotát. A megoldás miatt viszont a jelenlegi állapot meghatározásához szükség van a teljes történetre.

/files/01-adattarolas.png
Változások tárolása az idő folyamán. Forrás: [1]

Jelen példában a 1. verziónál hozzáadásra került három fájl (A, B, C). A 2. verzió két fájlt módosított, ami A1-el és C1-el van jelölve, viszont a B nem változott (referencia az előző verzióra). A 3. verzió csak a C1-et változtatta, míg a többit érintetlenül hagyta. A 4. verzió az A1 és B fájlokat változtatta meg, továbbá az 5. verzió az B1-et és a C2-t.

A Git működik úgy is, ha nincs központi szerver, mivel minden szükséges fájl a lokális gépen rendelkezésre áll. Ha a VPN épp nem szeretne működni vagy egy utazás közben is teljes funkcionalitással használható a verziókezelő (természetesen, ha a kollégáinkkal is meg szeretnénk osztani legújabb munkánkat, akkor kelleni fog hálózati kapcsolódás).

Azt is fontos megemlíteni, hogy a Git csak hozzáad információt, sosem töröl. Ez azt jelenti, hogy ha egy fájlt (pl. C3 az előző példában) törölni szeretnénk, akkor egy Version 6 fog keletkezni, amely tartalmazza a C3 törlése információt. Így, ha mégis kellene az a fájl, vagy egy részét szeretnénk felhasználni, akkor a Version 5-re váltva újra megtalálhatjuk azt.