i Saját Subversion tároló üzemeltetése
ii KÖZREMŰKÖDŐK 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
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
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ő 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ő 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ő megadni. Hosztnévként megadható localhost, így például az előbbi 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övetkező 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ő 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ő jogosultságokkal rendelkezzenek. A Subversion 1.6 számú verziójában jelent meg újdonságként a következő rövidítési lehetősé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
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ővé 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ő 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ő 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őnye viszont az, hogy a beállítás gyorsan és egyszerűen elvégezhető. 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ől a # karaktert és a szóközt. (A # karakterrel kezdődő sorok megjegyzések az állományban.) Ez a sor adja meg a felhasználókat és jelszavaikat tartalmazó állomány nevét. Értelemszerűen az ugyanebben a könyvtárban lévő passwd szövegállományban kell elhelyezni valamennyi felhasználóhoz egy megfelelő sort a [users] tartalmú sor után, mint például: svnadmin = secret A szerverfolyamat felé magukat megfelelően 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
3 / 4 paranccsal hoztuk létre munkapéldányunkat a tárólóban lévő project könyvtárról, akkor a project könyvtárban az alábbi módon kell végrehajtani az első 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ő 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ű az alábbi konvenciót követni. Valamennyi projekthez tartalmazzon a tároló egy trunk, egy branches és egy tags nevű alkönyvtárat. Például egy foo és bar nevű 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ővonalát. A branches alkönyvtár tartalmazza az egyes fejlesztői ágakat. A tags a fővonal 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} 1 $ svn mkdir svn://localhost/foo 2 $ svn mkdir svn://localhost/bar 3 $ svn import layout svn://localhost/foo -m "" 4 $ svn import layout svn://localhost/bar -m "" 5 $ svn import foo svn://localhost/foo/trunk -m "" 6 1 2 3 4 5 6 A három alkönyvtár létrehozása a layout könyvtár alatt. A /foo alkönyvtár létrehozása a tárolóban. A /bar alkönyvtár létrehozása a tárolóban. A layout könyvtár importálása a tárolóban a /foo alkönyvtárba. A layout könyvtár importálása a tárolóban a /bar alkönyvtárba. A projektet tartalmazó foo könyvtár importálása a tárolóban a /foo/trunk alkönyvtárba.
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űleg akár több szerverfolyamat is futhat, ügyeljünk arra, hogy a megfelelőt 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/.