i Címkék és ágak kezelése
ii KÖZREMŰKÖDŐK CÍM : Címkék és ágak kezelé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 A tároló szerkezete 1 2 Címkék kezelése 1 3 Ágak kezelése 1 4 Címkék és ágak 3 5 Hivatkozások 3
1 / 3 1. A tároló szerkezete Saját Subversion tároló üzemeltetése kapcsán bemutatásra került a tároló könyvtárszerkezetének szokásos kialakítása. A továbbiakban feltételezzük, hogy a tárolónk szerkezete ennek megfelelően az alábbi: / project/ branches/ tags/ trunk/ 2. Címkék kezelése A projekt fővonalának vagy ágainak pillanatnyi állapotáról mentéseket, úgynevezett címkéket készíthetünk a tags könyvtárba az svn copy paranccsal. Ezt a könyvtárat megállapodás szerint csak olvashatóként használjuk, a benne elhelyezett pillanatfelvételekben a továbbiakban nem módosítunk. A címkékhez létrehozáskor beszédes neveket szokás választani. Például a projekt első verziójának kiadásakor project-1.0 vagy röviden 1.0 néven hozhatunk létre mentést a trunk könyvtár pillanatnyi állapotáról. Ehhez az alábbi parancsot kell végrehajtani: $ svn copy svn://localhost/project/trunk \ svn://localhost/project/tags/1.0 -m "Creating tag 1.0" A végrehajtás során egy új verzió jön létre a tárolóban, amely már tartalmazni fogja a /project/tags/1.0 könyvtárat. Ha a Subversion 1.6 verzióját használjuk és rendelkezésre áll egy munkapéldány is, akkor a fenti helyett használható a rövidebb $ svn copy ^/project/trunk ^/project/tags/1.0 -m "Creating tag 1.0" alak is. Fontos, hogy a végrehajtásnál a munkapéldány legyen az aktuális könyvtár! A ˆ karakter a tárolót azonosító URI-t jelenti a rövidítésben. Az svn copy parancs fenti használati esetében két URI-t kell megadni argumentumként, amelyek könyvtárakat azonosítanak a tárolóban. Az első argumentum lehet akár egy munkapéldány elérési útvonala is. Ha például az $ svn co svn://localhost/project/trunk project-trunk paranccsal hoztuk létre a munkapéldányunkat, akkor a $ cd project-trunk $ svn copy. ^/project/tags/my-working-copy -m "Creating tag my-working-copy" parancsokat kiadva is létrehozhatunk egy címkét. Ilyenkor a munkapéldány aktuális állapota kerül be a tárolóba az adott könyvtár alá. A munkapéldány tartalmazhat akár lokális módosításokat is. Verziókezelés alatt álló állományok lokálisan módosult állapotát fogja másolni a parancs. Csak azok a munkapéldányban újként létrehozott állományok és könyvtárak lesznek másolva, amelyeket az svn add paranccsal megjelöltünk a tárolóhoz hozzáadandóként. (Az svn copy parancs tulajdonképpen egy commit műveletet hajt végre, amelynek eredményeként a munkapéldány állapota a tárolóban az adott könyvtárba kerül.) 3. Ágak kezelése megjegyzés Ide még kellene írni egy bevezető részt az ágakról. Egy új ágat éppen úgy hozhatunk létre az svn copy paranccsal, mint egy címkét. Például az
2 / 3 $ svn copy svn://localhost/project/trunk \ svn://localhost/project/branches/my-branch -m "Creating branch my-branch" parancs fogja létrehozni a tárolóban a my-branch ágat. Hozzunk létre egy munkapéldányt az ágról az $ svn co svn://localhost/project/branches/my-branch paranccsal! A továbbiakban ezzel a munkapéldánnyal fogunk dolgozni. Az ágon végzett lokális módosításainkat a megszokott módon, a commit műveletettel véglegesíthetjük a tárolóban. Hogy ne szakadjon el nagyon az ág fejlesztése a fővonal fejlesztésétől, időnként hajtsuk végre munkapéldányunkban az $ svn merge ^/project/trunk parancsot, amely az svn update parancshoz hasonlóan működik, és a fővonalon véglegesített módosításokat fogja belefésülni munkapéldányunkba. Az összefésülés során konfliktusok léphetnek fel, amelyek feloldását a korábbiak szerint végezhetjük el. Ne felejtsük el a merge művelet végrehajtása során kapott módosításokat a tárolóban is véglegesíteni az $ svn commit -m "Commiting trunk changes to branch my-branc" paranccsal! Ha az ágon már nem fogunk több módosítást végezni, akkor belefésülhetjük a fővonalba, végül pedig a már felesleges ágat is törölhetjük a tárolóból: $ svn co svn://localhost/project/trunk project-trunk 1 $ cd project-trunk 2 $ svn update 3 $ svn merge --reintegrate ^/project/branches/my-branch 4 $ svn commit -m "Merging branch my-branch back into trunk" 5 $ svn delete ^/project/branches/my-branch -m "Deleted branch my-branch" 6 1 2 3 4 Létrehozzuk a fejlesztés fővonalát tartalmazó /project/trunk könyvtár egy munkapéldányát project-trunk néven. Belépünk a project-trunk könyvtárba. A biztonság kedvéért frissítsük munkapéldányunkat a legfrissebb verzióra, mivel lehet, hogy időközben újabb véglegesítések történtek a tárolóban. Belefésüljük munkapéldányunkba az ágon végzett módosításokat. Ügyeljünk a --reintegrate opció megadására! megjegyzés A Subversion 1.8 számú verziójától nem szükséges megadni a --reintegrate opciót! 5 6 A merge művelet végrehajtása során kapott módosításokat a tárolóban is véglegesítjük. Eredményül egy olyan új verzió jön létre a tárolóban, amely a fővonal és az ág ötvözete. Töröljük a tárolóból a már felesleges my-branch ágat. Az ág nem tűnik el teljesen, csupán a művelet hatására létrejövő verzió nem fogja már tartalmazni. Ha a Subversion 1.6 előtti verzióját használjuk és az svn merge parancsot a --reintegrate opcióval hajtjuk végre, akkor az ág a továbbiakban már nem használható. Ez azt jelenti, hogy nem lehet az ágon módosításokat véglegesíteni, és az ág nem fésülhető bele újból a fővonalba sem. Ezért is érdemes az ágat törölni.
3 / 3 4. Címkék és ágak Az elmondottakból látható, hogy a verziókezelő rendszer szempontjából semmilyen különbség nincs a címkék és az ágak között. Címkéket és ágakat azonos módon hozunk létre az svn copy paranccsal. Megállapodás szerint azonban a tags könyvtár alatt létrehozott címkéket a továbbiakban nem módosítjuk. A branches könyvtár alatt létrehozott ágak további életet élnek, és ha már nincs szükség rájuk, akár törölhetjük is őket. 5. 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/.