# 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. <div style="text-align:center"><img src="guide/intro/img/vcstype_local.png" alt="Local Version Control Systems" /></div> Ilyen az [RCS](https://www.gnu.org/software/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. <div style="text-align:center"><img src="guide/intro/img/vcstype_central.png" alt="Centralized Version Control Systems" /></div> ### 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](https://github.com/) vagy a [Gitlab](https://gitlab.com/). 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. <div style="text-align:center"><img src="guide/intro/img/vcstype_distributed.png" alt="Distributed Version Control Systems" /></div>