Korábbi SVN bevezető bejegyzésem igen pozitív visszajelzéseket kapott, több reakció is érkezett rá. Az egyikben azt a kérdést szegezték nekem, hogy akkor hogyan is van ez a dolog, kell-e valami szerverszerűt telepíteni az SVN használatához, vagy másképp működik a rendszer? Röviden: nem feltétlenül, de a legegyszerűbb, ha van.

Én eddig egyszer telepítettem SVN szervert, egy ősrégi Debian masinára, a tapasztalat az volt, hogy bár megdolgoztam vele, nem igazán tért el egy szerver telepítéstől Linux alá. A helyzet azóta sokat változott, a Linux szerverek és maga a Subversion is fejlődött.
A kalandozást érdemes a Subversion projekt honlapján kezdeni, először is azzal, hogy pontosan hogyan is kommunikál az SVN kliens az SVN szerverrel. A – remélhetőleg – ismerős HTTP protokolt kiegészítő WebDAV/DeltaV kommunikációt használ (kicsit részletesebben), melyekről nem állítanám, hogy egyszerűek, mindazonáltal jól működnek. Ebből többminden következik. Az egyik, hogy a webproxy-kon keresztül elvileg jól működtethető az SVN kommunikáció, másrészt, hogy az Apache szerver a rendszer barátja. De ha nem akarjuk, nem kell bemutatnunk őket egymásnak, Apache nélkül is megoldható a dolog.
Kicsit előreugrok, hogy aztán érthetőbb legyen a következő bekezdés. Szóval miután felraktuk a szervert, az első dolgunk az lesz majd, hogy létrehozunk egy repository-t. A repository-k tárolására több módszer van, de alapvetően mindegyiknél létrehozunk egy könyvtárat a szerveren egy “svnadmin create könyvtárnév” parancs kiadásával, egy “mkdir könyvtárnév” mintájára. Windows alatt lehet, hogy van rá grafikus eszköz, nem tudom. Ebben a könyvtárban fogja nekünk letárolni a szerver a különböző információkat, és ezekben lehet matatni is, ha le akarunk kezelni olyan eseményeket, mint egy “commit” művelet. Jellemzően több könyvtár és fájl kerül ebbe a könyvtárba alapból bele.
Bár a dokumentációk mindenhol három lehetőséget emlegetnek mint rendszer összeállítási lehetőséget, valójában van egy negyedik is: a szerver nélküli használat. Ezt csak Linuxon parancssorban próbáltam, de vállalkozó kedvűek kipróbáhatják Windows alatt is, kiváncsi lennék. A lényeg, hogy az SVN kliensek jellemzően ismerik a fájlrendszer alapú címzést is a repository-t illetően, tehát ha az SVN repository-nk a szerveren a /usr/local/svnroot/webakademia könyvtárban van, akkor a file:///usr/local/svnroot/webakademia címen is hozzáférhetünk. Linux alatt ennek fényében az “svn co file:///usr/local/svnroot/webakademia” paranccsal “kicheckoutolhatjuk”.
További egyik lehetőség egy saját “svnserve” nevű szerverke, ez a legegyszerűbb feladat, s ha nincsenek különösebb igényeink, használjuk bátran ezt. Ezen kívül van még az SSH-n keresztüli működtetés “svnserve”-vel, és végül a legbonyolultabb konfigurációt az Apache 2 alá telepítés igényli, ahol egy modulként fog tudni működni a szerverünk. Fontos, hogy mind a három szerveres esetben magát a repository-t nekünk kell létrehoznunk, és hogy az SVN funkciókat illetően egyik szerver sem tér el a másiktól, csak és kizárólag abban, hogy hogyan authentikál a rendszerünk, s hogy milyen portokat használ. A konkrét szerver telepítéseket nem írom le, jó dokumentáció áll rendelkezésre hozzá a projekt honlapján. Alapvetően semmi hatalmas tortúrától nem kell tartanunk. Windows, Linux, Mac OS X és egyebek alá is elérhetőek a szerverek bináris terjesztésben, és ugye ott van a forráskód is, ha valaki a forrásban szeretne turkálni.
Ami a klienseket illeti, én eddig négy megoldást próbáltam. Különböző Linuxok, Mac OS X alatt bár nem mindig a legkényelmesebb, de biztos pont volt a parancssori “svn” nevezetű SVN kliens. Windows alá bátran ajánlom a Windows Explorerbe épülő TortoiseSVN-t, folyamatosan fejlődik, kényelmesen használható, és a teknős (lásd mellékelt ábra) is jó fej (ha lányokat kell meggyőzni a használatáról). Eclipse alatt a Subclipse nevű plugint használtam, mely elég kényelmesen beépül az Eclipse-be, és kényelmesen használhatóvá teszi az SVN-t. Jó tudni, hogy a TortoiseSVN és az Eclipse modul ugyanúgy adminisztrálja kliens oldalon a fájlokat, így párhuzamosan tudunk együtt dolgozni a kettővel ugyanazokon a fájlokon. Végül mostanában az svnX nevű Mac OS X-es klienst használom, s bár ezzel nem vagyok annyira elégedett, mint a TortoiseSVN-nel vagy az Eclipse modullal, de ez is jól működik. Van még a TextMate-nek is SVN kliense, de az vagy csak részben használható, vagy még nem jöttem rá hogyan kell – nem tudom. Persze ez korántsem a teljes lista, egy jóval bővebb itt olvasható.
Jó SVN-ezést! Előbb-utóbb folytatom további részletekkel.
Mindenkinek ajánlom, hogy legyen fent parancssoros SVN-ja is, mert sajnos még a Tortoise-zal is jártam úgy, hogy olyan állapotba került, hogy nem voltam képes vele tovább lépni (a Subclipse-re meg pláne jellemző ez). Ilynekor parancssroból kényelmes meg lehet oldani a problémát.
Egy másik ok ami miatt jó lehet, hogy van amikor egy nagyobb update-tel a Subclipse képes elég rendesen eltökölni, ilyenkor jobban járunk, ha parancssorból updatelünk, és uátna az Eclipse-ben F5 (frissítés).
És egy másik ok, ami miatt megint csak nélkülözhetetlen, ha megváltozik a jelszavunk. Nagyszerű Subclipse ilyenkor szépen ad egy hibajelzést, de nem tudjuk megbáltoztatni a jelszavunk. Ilyenkor annyi kell, hogy parancssorban kiadunk a megfelelő working copyban mondjuk egy “svn st -u” parancsot, és pluszban megadjuk neki a –user-name illetve a –password kapcsolókat a megváltozott adatokkal. Ezután már a Subclipse-nek is menni fog a dolog.
Üdv,
Felhő
2004 óta használom a fejlesztői gépen Win XP alatt parancssorban az SVN-t “szerver nélküli” módban is és tökéletes működik. 2 repository-m is van, teljesen hibátlan minden, a backup-okat is szépen tudtam automatizálni, hiszen Windows alatt is van svndump, ami végül a WinZip parancssori interfészén keresztül kerül tömörítésre, végül a Nero parancssori verziójával íródik ki újraírható CD-kre. Szóval XP alatt is lehet kényelmesen SVN-ezni lokálisan.
Távoli SVN repository-kat is használok Windows alól, de persze ez természetes.
Köszi a cikket, hasznos volt!
Nekem csak egy kérdésem lenne.
Mi a jól bevált gyakorlat repository-k terén? Minden projectet külön repo-ba célszerű pakolni, vagy mindent egybe?
Elég határozottan azt mondhatom, hogy külön.
Sokat nem veszítesz azzal sem, ha egyberakod (ha valahol csak egy repo-t kapsz pl.), de pl. hozzáférést korlátozni repository-ként a legegyszerűbb.
Azért simán megérheti bizonyos dolgokat egybe tenni, így ha akarod, akkor egyben kezelheted őket(pl. nem kell külön updateket kiadni), de ha akarod, akkor nem (mikor melyikre van szükség).
Jogosultságot állitani semeddig nem tart könyvtárra sem.
@Ákos: nézd meg ezt, hasznos tud lenni: http://svnbook.red-bean.com/en/1.0/ch07s03.html
Üdv,
Felhő
Windows alá félig sikeresen telepítettem TortoiseSVN-t. A gikszer az, hogy ha ssh-n keresztül szeretnék csatlakozni, akkor az csak adminisztrátorként belépve lehetséges.
Hosszas próbálkozások után dezaktiváltam a tűzfalat, a nem adminisztrátori accountomat pedig adminisztrátori jogokkal láttam el. Ezek ellenére sem tapasztalok változást. Miután beírom a jelszót, mindig az alábbi hibaüzenetet kapom: “Connection closed unexpectedly”
Bármilyen segítséget, ötletet örömmel veszek…
üdv:
fratz