Röviden szeretném bemutatni, hogyan is lehet Linux alatt SVN szervert készíteni!
Mivel most telepítettem újra a rendszerem, amire egy Redhat Fedora Core 4 került, ezért ezen keresztül mutatom be az installálást. Természetesen más disztribúción is elvégezhető a telepítési folyamat..
Nos, első lépésben telepítsük fel a kedvenc disztibóciónkhoz a kapott subversion csomagot vagy szedjük le a forrást és fordítsuk le!
FC4 alatt ez a csomag a subversion-1.1.4-3 lesz.
A csomagban találunk egy svnserve programot. Ez az SVN szerver.
SVN szerver telepítése
Csináljunk egy állományt az /etc/xinetd.d alatt svn néven. Ez fogja tartalmazni a xinetd-nek az SVN szerver indításához szükséges paramétereket.
Az általam készített állomány így néz ki:
service svn
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = svn
server = /usr/sbin/svnserve
server_args = -i -r /home/svn/repositories
}Az állományban a user résznél én svn felhasználót használok. Természetesen ezt a rendszerünkön létre kell hozni:
/usr/sbin/adduser svn
Nálam a felhasználó gyökérkönyvtára a /home/svn lesz, ezért a konfigurációs állományban a repository helyét a /home/svn/repositories alá adtam meg. Ezt az svnserve programnak a -r kapcsolóval lehet megadni!
Nos, akkor hozzuk létre a repositories könyvtárat az SVN felhasználó nevében:
su svn
mkdir -p /home/svn/repositories
exitFontos, hogy a repository könyvtárat és később magát a repository adatokat is az svn felhasználó nevében hozzuk létre, különben később a szerver nem fogja tudni elérni!
Mivel xinetd-t használok, ezért a rendszeren ennek is futnia kell! Indítsuk el a setup programot (terminálnál begépelni setup!), majd ott válasszuk ki a "System services" menüpontot! A vége fele keressük meg a xinetd-t és engedélyezzük a futtatását. (Ha csillag van, akkor fut!) Amennyiben nincs a listában xinetd, úgy telepítsük fel az FC4 lemezről ezt is!
Jó, akkor most indítsuk újra a xinetd-t:
/etc/init.d/xinetd restart
Egy új repository létrehozása
Lépjünk be az SVN felhasználó nevében (su svn), majd hozzuk létre az első repository-nk pl. test néven az svnadmin felhasználásával:
svnadmin create /home/svn/repositories/test
Mi is ez a repository? Ez egy olyan adatbázis lesz, amelyben egy könyvtárszerkezetben lehet mindenféle projektet (vagy csak 1-et) tárolni. Pl. ez lehet csak egy projekt neve, de lehet egy cég vagy csoportnév is. A repository egy olyan egység lesz, amelyben a forráskódokat és adatokat tetszőlegesen másolhatunk, mozgathatunk és mindenféle más műveletet végezhetünk. Repository-k között pl. a másolás vagy mozgatás már nem lehetséges!
Minden repository-hoz felhasználókat rendelhetünk. Nézzünk bele a repository konfigurációs állományába, amelyet a /home/svn/repositories/test/conf/svnserve.conf alatt találunk!
Szeretnék két egyszerű példát bemutatni!
Mindenki számára elérhető repository konfigurálása
Az svnserve.conf beállítása a repository/conf alatt:
[general]
anon-access = write
auth-access = writeNagyon egyszerű dolgunk van. Kétfajta felhasználót tudunk megkülönböztetni: anonymous = anon-access (nem kell jelszó és név hozzá) és az authentikált = auth-access (név és jelszó kell hozzá)
Mindkét csoportnak háromféle jogosultságot tudunk megadni: none = nincs joga hozzá, read = csak olvasni tud (pl. forráskódokat letölteni), write = olvasni és módosítani is tud benne
A fenti példában azt írtam le, hogy mind az anoním, mind az authentikált felhasználó írásra és olvasásra egyaránt elérheti.
Felhasználók számára írásra engedélyezett repository konfigurálása
Abban az esetben, ha néhány felhasználónak szeretnénk írási jogot adni, úgy állítsuk be az auth-access sort write-ra, míg az anon-access-t none-ra vagy read-re:
[general]
anon-access = read
auth-access = writeEbben a példában a névvel és jelszóval bejelentkezett felhasználók írni is tudják, az anoním felhasználók viszont csak olvashatják a repository-nkat. Ez a tipikus beállítás az open source programokhoz.
Igen ám, de hol tároljuk el a felhasználóinkat és a hozzá tartozó jelszavakat?
Bővítsük a konfigurációs állományunkat a következő sorral:
password-db = mypasswd
Ez nem ördöngősség. Ezzel azt mondtuk meg, hogy a jelszó állományunk egy mypasswd elnevezésű állomány lesz az svnserve.conf mellett. (Természetesen a név és a path is átírható)
OK, most már csak ezt a jelszó állományt kell leírni, amely így néz ki:
[USERS]
imre = titkosVagyis a [USERS] alatt a felhasználókat kell felsorolni a jelszavukkal együtt. A példámban egy imre nevű felhasználónk lesz titkos jelszóval.
Rövid teszt
A részletes kliens használatot ide nem szeretném leírni, de addig is 1-2 apróság!
Megjegyzem, hogy az SVN helpet ad 1-1 parancsról vagy a használható parancsairól is:
svn help
svn help commit
Anyag feltöltése a repository-ba
Hozzunk létre egy könyvtárat, másoljuk bele a forrásainkat, majd lépjünk bele. Utána: svn import . svn://localhost/test. Ezzel az aktuális könyvtár tartalmát felrakjuk a test repository-ba. Amennyiben panaszkodna, hogy nem tudunk szöveget beírni, úgy ezt egy -m "szöveg" kapcsolóval megtehetjük vagy a kedvenc editorunkat is megadhatjuk (pl. mcedit): export SVN_EDITOR=mcedit!
Amennyiben felhasználónév és jelszó is kell, azt adjuk meg, amikor az SVN kliens kéri!
Anyag leszedése könyvtárral együtt
Hozzunk létre egy könyvtárat, majd svn checkout svn://localhost/test.
Anyag leszedése, de csak a könyvtár tartalmával
Hozzunk létre egy könyvtárat, majd svn checkout svn://localhost/test ..
A végén kell a pont!
Megváltozott anyag feltöltése a repository-ba
Az adott könyvtárban állva: svn commit
Repository-ból a változások letöltése
Adott könyvtárban állva: svn update
Különbség a repository és a lokális anyag között
Könyvtárban állva: svn diff
Vagy a státuszhoz: svn st
- A hozzászóláshoz regisztráció és belépés szükséges
