Saját Subversion tároló üzemeltetése i
Saját Subversion tároló üzemeltetése
Saját Subversion tároló üzemeltetése ii
˝ ˝ KÖZREMUKÖD OK CÍM : Saját Subversion tároló üzemeltetése TEVÉKENYSÉG
NÉV
DÁTUM
ALÁÍRÁS
ÍRTA
Jeszenszky, Péter
2014. február 16.
VERZIÓTÖRTÉNET VERZIÓ
DÁTUM
LEÍRÁS
NÉV
Saját Subversion tároló üzemeltetése iii
Tartalomjegyzék 1
Az svnadmin program
1
2
Tároló létrehozása
1
3
Tárolók elérése
1
4
Szerverfolyamat indítása
2
5
Hozzáférés szabályozása
2
6
Azonosítás a szerverfolyamat felé
2
7
Tároló könyvtárszerkezetének kialakítása
3
8
Szerverfolyamat leállítása
4
9
Hivatkozások
4
Saját Subversion tároló üzemeltetése 1/4
1.
Az svnadmin program
Subversion tárolók adminisztrálásához az svnadmin programot használhatjuk. A programnak megadható alparancsokat az $ svnadmin help
parancs jeleníti meg. Egy alparancs nevét is megadva annak használatához kapunk segítséget. Például az $ svnadmin help create
jeleníti meg a tárolók létrehozására szolgáló alparancs használatáról a legfontosabb tudnivalókat.
2.
Tároló létrehozása
Tároló létrehozásához használjuk az $ svnadmin create /path/to/repo
parancsot, ahol /path/to/repo a tárolót tartalmazó könyvtár elérési útvonala. Ezt a könyvtárat a program hozza létre, ehhez természetesen megfelel˝o jogosultság szükséges. Példák a parancs használatára: $ svnadmin create /var/svn/repo $ svnadmin create repo
3.
Tárolók elérése
Az svn és az összes többi kliensprogram számára a Subversion tárolókat URI-kkal kell azonosítani. Lokálisan az állományrendszerben elérhet˝o tárolók azonosításához a file URI sémát használjuk. Például ha a /var/svn/ repo könyvárban hoztuk létre a tárolót, akkor ezt a file:///var/svn/repo URI azonosítja. Figyeljünk arra, hogy minden ilyen URI-ban abszolút elérési útvonalat kötelez˝o megadni. Hosztnévként megadható localhost, így például az el˝obbi URI helyett használható file://localhost/var/svn/repo is. megjegyzés Windows környezetben is a / karaktert használjuk elérési útvonalakban a \ karakter helyett. Az URI részeként meghajtó is megadható, melynek módját a következo˝ példa szemlélteti: file:///C:/Subversion/Repository.
Például az $ svn import project file:///var/svn/repo/project -m "Initial import"
paranccsal tudjuk beimportálni az aktuális könyvtárban lév˝o project könyvtárat a tárolóba. Ügyeljünk arra, hogy az URI végén is adjuk meg a könyvtár nevét. (Egyébként a tárolóban nem fog létrejönni a project könyvtár, csupán az importált könyvtár állományai kerülnek be a tárolóba.) A fenti tároló tartalmát hasonlóan az $ svn list file:///var/svn/repo
paranccsal lehet megjeleníteni. Amennyiben a tárolót szolgáltató számítógépen lokálisan dolgozik valemennyi felhasználó, akik számára hozzáférést kell biztosítani a tárolóhoz, akár így, külön szerverfolyamat nélkül is használhatják azt. Ehhez mindössze annyi szükséges, hogy a tároló könyvtárához megfelel˝o jogosultságokkal rendelkezzenek. A Subversion 1.6 számú verziójában jelent meg újdonságként a következ˝o rövidítési lehet˝oség. Ha az aktuális könyvtár egy verziókezelés alatt álló könyvtár, akkor a tároló gyökérkönyvtárának URI-jára ˆ/ módon is lehet hivatkozni. Például az
Saját Subversion tároló üzemeltetése 2/4
$ svn list -R ^/
parancs a tároló teljes tartalmát megjeleníti, az $ svn list -R ^/project
csupán a project könyvtárét.
4.
Szerverfolyamat indítása
Hálózaton keresztül is elérhet˝ové tehetjük a tárolót végrehajtva az $ svnserve --daemon --listen-port=port --root=/path/to/repo
vagy az ekvivalens $ svnserve -d --listen-port=port -r /path/to/repo
parancsot, ahol a --listen-port opcióban annak a portnak a számát adjuk meg, melyen elérhet˝o lesz a szerverfolyamat (ha elhagyjuk, akkor az alapértelmezés 3690), /path/to/repo pedig a tároló könyvtára. A folyamat elindítása után a tárolót az svn://hosztnév :port/ URI azonosítja.
5.
Hozzáférés szabályozása
A szerver és a kliensek közötti biztonságos kommunikációval nem foglalkozunk. Az alább bemutatásra kerül˝o konfiguráció nem használ például semmiféle titkosítást az adatátvitel során, ráadásul a felhasználók jelszavai is olvasható formában tároltak. El˝onye viszont az, hogy a beállítás gyorsan és egyszer˝uen elvégezhet˝o. Szerkesszük meg a tároló könyvtárában a conf/svnserve.conf állományt. Elég mindössze két karaktert törölni, távolítsuk el a # password-db = passwd
sor elejér˝ol a ’#’ karaktert és a szóközt. (A ’#’ karakterrel kezd˝od˝o sorok megjegyzések az állományban.) Ez a sor adja meg a felhasználókat és jelszavaikat tartalmazó állomány nevét. Értelemszer˝uen az ugyanebben a könyvtárban lév˝o passwd szövegállományban kell elhelyezni valamennyi felhasználóhoz egy megfelel˝o sort a [users] tartalmú sor után, mint például: svnadmin = secret
A szerverfolyamat felé magukat megfelel˝oen azonosítani tudó felhasználók rendelkeznek írási jogosultsággal a tárolóra, a többiek csak olvasni tudják azt. (Alapértelmezésben mindenkinek csak olvasási joga van.)
6.
Azonosítás a szerverfolyamat felé
Ha a tárolóhoz való hozzáféréshez azonosítás szükséges, akkor az svn programnak a --username felhasználó opcióval lehet megadni a felhasználói nevet. A program kérni fogja a felhasználói névhez tartozó jelszót is. Az opciót és a jelszót elég egyetlen alkalommal megadni, a továbbiakban megjegyzésre kerül. Ha ezt nem szeretnénk, akkor a --no-auth-cache opciót használjuk. Ha például az $ svn co svn://localhost/project
Saját Subversion tároló üzemeltetése 3/4
paranccsal hoztuk létre munkapéldányunkat a tárólóban lév˝o project könyvtárról, akkor a project könyvtárban az alábbi módon kell végrehajtani az els˝o svn commit parancsot: $ svn commit -m "" --username dexter
A továbbiakban azonban már nem szükséges a felhasználói név megadása, tehát elegend˝o az $ svn commit -m ""
parancs kiadása.
7.
Tároló könyvtárszerkezetének kialakítása
Tárolók kialakításánál célszer˝u az alábbi konvenciót követni. Valamennyi projekthez tartalmazzon a tároló egy trunk, egy branches és egy tags nev˝u alkönyvtárat. Például egy foo és bar nev˝u projekt esetén így nézhet ki a tároló szerkezete: / foo/ branches/ tags/ trunk/ bar/ branches/ tags/ trunk/
Az egyes alkönyvtárak funkciója az alábbi: • A trunk alkönyvtár tartalmazza a fejlesztés „f˝ovonalát”. • A branches alkönyvtár tartalmazza az egyes fejleszt˝oi ágakat. • A tags a „f˝ovonal” vagy az ágak alkalmankénti mentéseit tartalmazó alkönyvtár, mely alatt tárolt „pillanatképekben” nem szokás módosítani. A fenti struktúra kialakítását például az alábbi parancsokkal végezhetjük el: $ mkdir -p layout/{branches,trunk,tags} 1v $ svn mkdir svn://localhost/foo 2v $ svn mkdir svn://localhost/bar 3v $ svn import layout svn://localhost/foo -m "" 4v $ svn import layout svn://localhost/bar -m "" 5v $ svn import foo svn://localhost/foo/trunk -m "" 6v v
A három alkönyvtár létrehozása a layout könyvtár alatt.
v
A /foo alkönyvtár létrehozása a tárolóban.
v
A /bar alkönyvtár létrehozása a tárolóban.
v
A layout könyvtár importálása a tárolóban a /foo alkönyvtárba.
v
A layout könyvtár importálása a tárolóban a /bar alkönyvtárba.
v
A projektet tartalmazó foo könyvtár importálása a tárolóban a /foo/trunk alkönyvtárba.
1
2
3
4
5
6
Saját Subversion tároló üzemeltetése 4/4
8.
Szerverfolyamat leállítása
A szerverfolyamat leállításához használjuk a $ kill -SIGKILL PID
parancsot, ahol PID a szerverfolyamat folyamatazonosítója. A folyamathoz tartozó folyamatazonosítót a $ ps axu | grep svnserve
parancs végrehajtásával határozhatjuk meg, a kimenet második oszlopa tartalmazza. Egyidej˝uleg akár több szerverfolyamat is futhat, ügyeljünk arra, hogy a megfelel˝ot válasszuk.
9.
Hivatkozások
[svnbook]
Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato, Version Control with Subversion, For Subversion 1.7, http://svnbook.red-bean.com/ .