Ugrás a lényegre

Verziókezelés

Mi is az a verzió kezelés?
Talán a legegyszerűbb egy példán keresztül szemléltetni.
Tegyük fel egy docx fájlt szerkesztünk és ezt hetente frissítve rendszeresen el kell küldenünk emailben valakinek. Ilyenkor különböző verziók keletkeznek a fájlból és ezeket a postafiókunkból könnyedén elő tudjuk szedni.

Na ugyanazen a példán tovább mehetünk.
Mi van ha lokális kezdjük ezeket a fájlokat tárolni?
Gondolom mindenki találkozott már hasonló fájlnevekkel:

├── elso_beadasom.docx
├── masodik_beadasom.docx
├── masodik_beadasom (1).docx
├── masodik_beadasom (1) Javított.docx
├── masodik_beadasom (1) Javított másolata.docx
├── asd.docx
├── asdasd.docx
└── asdasdasdasd.docx

Ha ügyesek vagyunk még mappákat is készítünk és dátumot is hozzá cimkézünk.

└── 2021
└── 02
├── 13
│   └── elso_beadasom.docx
├── 19
│   └── masodik_beadasom_felkesz.docx
├── 20
│   ├── masodik_beadasom.docx
│   ├── masodik_beadasom_javitott.docx
│   └── masodik_beadasom_vegleges.docx
└── ideiglenes
├── asd.docx
├── asdasd.docx
└── asdasdadsads.docx

Persze az operációs rendszer képes dátum alapján rendezni, és megspórol nekünk pár lépést, de mi van ha ezt valakinek el is szeretnénk küldeni? Mi van ha a módosítás dátuma közben módosul? Hogyan biztosítjuk, hogy közben nem sérülnek a fájlok?

Ezekre megoldást adnak a különböző verziókezelő rendszerek.
Többek közt dolguk, hogy fájljaink számon tartsák, ahogy például kézileg tettük.

Milyen verzió kezelő rendszereink lehetnek?

Helyi

Erre a fenti példa a legjobb példa.
Vannak különböző verziói a fájlunknak és ezeket valamilyen adatbázisban rögzítjük.

Local Version Control System

Ilyen a RCS.

Központosított

Ez már egy fokkal okosabb. A különböző verziókat a központi szerverre rakjuk fel és onnan szedjük le.
Például van egy Fájlszerverünk amit minden gépről elérnek az emberek és oda dolgoznak közösen...
Érezhető probléma, hogy így ha meghal a központi szerver, akkor mindent elvesztünk (eskü nem volt még ilyen 😅).
Továbbá probléma lehet, hogy egymás munkáját felülírjük, szerencsére egy jó rendszernél erről értesítést kapunk, hozzá és nem felülírjuk a módosításaink.

Centralized Version Control Systems

Megosztott

Na és itt lépünk be a ma is használt Git világába. Ennél a megoldásnál már az a trükk, hogy mindenkinek megvan a teljes projekt az összes verziójával. Felmerül, hogy na de akkor honnan szedjük le a legújabb verziót? Különböző megoldások léteznek, például a fejlesztők a módosításokat azonnal megosztják egymással (pl.: p2p Torrenthez hasonló módon) vagy kijelölnek egy központi szervert amivel mindenki szinkronban van. Ilyen központi szerver lehet például a Github vagy a Gitlab.
Csak megjegyzem, akár a módosításokat emailben is el lehet küldeni és a szoftver automatikusan megcsinálja a többit a mi részünkön.

Distributed Version Control Systems