A TortoiseSVN használata

A TortoiseSVN-ről nagyon röviden

A TortoiseSVN egy nagyon jó kliens program Windows alá az SVN szerverek és repository-k eléréséhez. Feltelepítése után beépül az explorerbe. Úgy tudjuk elérni, hogy egy könyvtáron vagy állományon állva az egér jobb gombját lenyomjuk (vagy Total Commander alatt lenyomva tartjuk). Az itt megjelenő popup menüben már meg is jelenik az "SVN Checkout.." és a TortoiseSVN almenü.

Új repository készítése

Ajánlom, hogy (ha megtehetjük, akkor) készítsünk egy külön szervert, amin a repository-kat tároljuk. Ez nem árt, ha Linuxos és időközönként lementjük (dump-oljuk egy DVD-re a tartalmát). Persze mód van arra is, hogy egy külön könyvtárat nevezzünk ki erre. Hívjuk most ezt c:\repositories-nek! OK, készítsük akkor el ezt a könyvtárat, majd kattintsunk rá jobb gombbal és válasszuk ki a TortoiseSVN/Create repository here almenüt. Az adatokat adatbázisban (Berkeley Database) vagy natív fájlrendszerben (Native Filesystem) is tárolhatjuk. Eddig én a BDB-t használtam, ami elég gyors és megbízható!

Ezzel elkészítettük a repository-t. Ennyivel persze nem ússzuk meg, mert be kell állítani (a Linuxos szervernél említett módon) a felhasználókat és jogosultságaikat. Ezt a fájlt a c:\repositories\conf\ alatt találjuk és a neve pedig az svnserve.conf. Nem másolom be mégegyszer ide, de a Linuxos résznél érdemes átfutni a "Mindenki számára elérhető repository konfigurálása" és az utána következő részt. Egy gépen a windowsos klienssel úgy tűnik, hogy nem igazán törődik a jogosultságokkal. Vagyis mindegy, hogy mit állítunk be, mindent el tudunk érni. Linuxos szerver Windowsos kliensekkel jól működik!

Minden repository egy könyvtárszerkezetet fog tárolni, ennek bármelyik alkönyvtára külön-külön elérhető, frissíthető. Valami hasonló szerkezetet ajánlok:

c:\repositories\
  |--    project1\
     |--      1.0.0\
     |--      1.0.1\
      --      develop\
  |--    project2\
     |--      1.0\
     |--      2.0\
      --      develop\

Vagyis a projekteken belül legyen egy olyan könyvtár, amibe dolgozunk (ez pl. develop, work, current stb.). Amint elkészül egy verzió, amit kiadunk (pl. telepítőt készítünk belőle és átadjuk a felhasználóknak), akkor az egész könyvtárat (pl. project1\develop) átmásoljuk az adott verzióra (pl. project1\1.0.2). Az SVN-en belüli másolás nem jár ténylegesen az állományok másolásával, csak egy bejegyzés. Vagyis elég "olcsó" művelet.

Ezzel a megoldással biztosíthatjuk azt, hogy külön úton járhatnak a különböző verziók. (Pl. régebbi verzióban máshogyan van megoldva egy feladat, mint egy újabban) Amint egy hiba felfedeződik valamelyik verzióban, azt így könnyedén ki lehet javítani (pl. csak az 1.0.1-ben volt, akkor ez nem érinti a többit) és az adott verziót függetlenül a többitől ki lehet adni egy javitott telepítőanyagban.

Alkönyvtárak elhelyezése a repository-ban

Hozzunk létre a repository-tól függetlenül egy munkakönyvtárat. Ebben lesznek a projektek, amikben dolgozunk. Legyen ez most c:\projects. Nem szükséges minden felhasználónak az összes alkönyvtárat letölteni! Elegendő csak azokat, amelyekre szüksége van. Most készítsük el az első munkánkat és töltsük fel a repository-ba, hogy a többi felhasználó is elérhesse! Hozzunk létre egy project1 alkönyvtárat a c:\projects-en belül! Tegyünk bele egy kis állományt (pl. 1.cpp)!

Miután ezzel végeztünk, akkor töltsük fel! Lépjünk rá a projects-re és kattintsunk rá az egér jobb gombjával! A megjelenő menüből a TortoiseSVN/Import-ot kell kiválasztani! Az URL of repository résznél keressük ki a C:\repositories mappát (vagy a szervert, ha van)! Ha mindent jól csináltunk, akkor a következő fog megjelenni: file:///C:/repositories

Az Import Message-hez tetszőleges szöveget írhatunk, amivel későbbiekben nyomon lehet követni a változásokat. Az OK gombra kattintva megtörténik a feltöltés. Ezzel a repository-hoz adtuk a projects könyvtár tartalmát! Később új munkákat is elhelyezhetünk így.

Alkönyvtárak letöltése

Most töröljük le a C:\projects tartalmát, majd kattintsunk megint rá a jobb egérgombbal és válasszuk az SVN Checkout.. menüpontot! Az URL-t válasszuk ki (C:\repositories), majd OK. Amennyiben csak egy részt szeretnénk kiszedni a repository-ból (pl. csak egy projektet), akkor az URL-nél a három pontra kattintva a Repository browser-rel kikereshetjük a kívánt mappát.

Amennyiben egy már letöltött mappára kattintunk jobb egérgombbal, úgy megjelenik egy SVN Update menü. Ezzel lehet a mások által történt változásokat letölteni a saját munkakönyvtárunkba. Az update-et ezután bármelyik alkönyvtáron vagy állományon elérhetjük!

Módosított anyag feltöltése

Próbaképpen írjuk át az 1.cpp állományunkat! Amennyiben most egy felette levő alkönyvtárra vagy magára az állományra kattintunk jobb egérgombbal, úgy elérhetünk egy SVN Commit menüt. Ennek a menünek a segítségével felrakhatjuk a repository-ba a módosított tartalmat. Itt tetszőleges megjegyzést fűzhetünk hozzá, amiben kifejthetjük a változtatásokat. Az OK gombra kattintva megtörténik a feltöltés.

Most nézzük meg, hogyan lehet új állományokat berakni. Egyszerűen csak hozzuk létre őket a munkakönyvtárunkban, majd a munkakönyvtáron állva mehet ugyanúgy az SVN Commit! Itt arra kell vigyázni, hogy ezeket még nem rendeltük hozzá a repository-hoz, ezért a megjelenő ablak alsó részében ki kell "pipálni" őket!

Lehetőség van arra, hogy még a feltöltés előtt jelezzük az SVN-nek az új állományokat. Nincs más dolgunk, mint az állományra kattintva kiválasztani a TortoiseSVN/Add pontot. Arra vigyázzunk, hogy olyan adatfájlokat, amit a Visual C generál (pl. object fájlok .obj, vagy egyéb ideiglenes állományok) NE tároljunk feleslegesen a repository-ban! (Csak .cpp-ket, .h-kat stb.) Természetesen ha pl. egy képfájl része a projektünknek, akkor azt is fel kell tölteni a repository-ba! Röviden minden olyan állományt tároljunk, amire szükségünk van, de olyat ne, ami menet közben generálódik!

Azokat a fájlokat, amik a könyvtárunkban szerepelnek, de nem szeretnénk őket feltölteni megjelelölhetjük a TortoiseSVN/Add to Ignore List menüponttal. Ha később meggondoljuk magunkat, akkor az Add ponttal bármikor hozzáadhatjuk!

Törlés, átnevezés

Arra vigyázzunk, ha letörlünk egy állományt a munkakönyvtárunkból, akkor a következő update a repository-ból ezt vissza fogja tölteni. Emiatt a törlésre és az átnevezésekre minden esetben használjuk a TortoiseSVN/Rename vagy a TortoiseSVN/Delete menüpontot.

Egy állomány törlése nem jelenti azt, hogy a repository-ból ez fizikailag tényleg ki is törlődik! Vagyis csak az aktuális verzióból és az utániakból töröltük, de bármikor visszatölthetjük egy régebbi verzióból, ha szükségünk van rá.

Változások megtekintése

A helyi munkakönyvtár és a repository között bármikor összehasonlítást végezhetünk. Kattintsunk a munkakönyvtárunkra és válasszuk ki a TortoiseSVN/Check for Modifications pontot! Itt megjelennek a különbségek a repository és a munkakönyvtárunk között. Egy állományra kettőt kattintva előjön az összehasonlító ablak, ahol soronként megtekinthetjük a különbségeket. Egy állományra is elérhetjük ezt az összehasonlító ablakot a TortoiseSVN/Diff ponttal.

Másik megközelítés a TortoiseSVN/Show log vagy a TortoiseSVN/Revision Graph. Ezeket még érdemes kipróbálni! Hasonló módon érhetjük el a Repository browser-t is, ahol nem a munkakönyvtárunkon, hanem közvetlenül magán a repository-n tudunk különféle műveleteket végezni a jobb gomb segítségével.

Dióhéjban ennyit a TortoiseSVN-ről. Ezekkel már el lehet boldogulni! A többi opció eléréséhez (merge, blame stb.) érdemes átnézni az SVN leírást.