Tämän sivu on muokattu Ville-Pekka Vainion
sivun pohjalta.
Sivut on tehty 22.1.2007
SVN-ohje
1. Perusidea
Tässä hieman tietoa versionhallinnasta niille, joilla ei ole
asiasta kokemusta.
Versionhallinta perustuu ns. repositorioon. Repositorio on aika
lähellä tavallista tiedostopalvelinta, paitsi että se pitää kirjaa
kaikista sen hallintaan asetetuista tiedostoista. SVN-repositoriota
voidaan käyttää verkon yli ja se mahdollistaa monen käyttäjän editoivan samoja tiedostoja
samanaikaisesti. Repositoriosta on mm. mahdollisuus palauttaa poistettuja tiedostoja,
palata vanhoihin versioihin ym.
Repositoriota ei käsitellä suoraan vaan aina ns. työkopioiden
kautta. Jossain mielessä tilannetta voisi verrata olio-ohjelmointiin siten, että
repositorio on luokka ja työkopio tämän luokan ilmentymä. Työskentely aloitetaan
hakemalla omalle koneelle tai laitoksen kotihakemistoon työkopio
repositoriosta. Jos haku on jo kerran tehty, entisen työkopion voi myös pelkästään
päivittää uusilla muutoksilla, joita muut ovat tehneet. Kun omat muutokset on valmiit, ne
pitää viedä repositorioon, josta muut voivat sitten ladata ne omaan
työkopioonsa.
Samalla käyttäjällä voi toki olla useampiakin työkopioita,
esim. laitoksen kotihakemistossa, kotikoneella ja vaikka läppärillä. Kunhan työkopionsa
päivittää aina ennen työskentelyn aloittamista, kaikki toimii.
2. Ryhmämme Anno3 repositorio
Repositoriomme sijaitsee hakemistossa /home/group/anno3/repo/.
Tuota hakemistoa ei kuitenkaan ole tarkoitus käsitellä suoraan, vaan ainoastaan
svn-komentojen kautta.
Repositorio sisältää sekä nettisivut että lähdekoodille
tarkoitetun hakemiston eli hakemistot public_html/ ja src/ . Hakemisto
src/ jakautuu vielä kolmeen alihakemistoon, branches/, tags/ ja trunk/ . Näiden tarkoitus
on säilyttää mahdollisia eri tilanteissa olevia lähdekoodeja.
Pääkehitys tapahtuu aina trunk-hakemiston alla. Branches on tarkoitettu tilanteisiin,
joissa koodi haarautuu niin, että siitä on syytä pitää useampaa eri haaraa myös
versionhallinnassa. Tags on tarkoitettu tilanteisiin, joissa halutaan
"jäädyttää" jokin tietty versio lähdekoodista. Ei ole ollenkaan varmaa,
että tarvitsisimme mitään muuta kuin trunkia näistä, mutta olen valinnut
tällaisen hakemistorakenteen siksi, että se on tietynlainen "oletus". Ja jos
kuitenkin tulee sellainen tilanne että tarvitaan esim. branchesia, ei ainakaan
tarvitse tehdä sitä jälkikäteen.
3. Käytön aloitus
Työkopio haetaan repositoriosta svn checkout -komennolla. Voit
"checkoutata" minkä tahansa alihakemiston mitä repositoriossa on. Käytännössä tulet todennäköisesti tarvitsemaan trunk/src/ ja trunk/dokumentit/ -hakemistoja. Esimerkiksi dokumentit saa editointia varten trunk/dokumentit/-hakemistosta
dokumentit työkopion saa komennolla:
svn checkout svn+ssh://OMATUNNUS@melkki.cs.helsinki.fi/home/group/anno3/repo/trunk/dokumentit
Vastaavasti trunk/src/ -hakemistosta (siis lähdekoodit) saa työkopion komennolla:
svn checkout svn+ssh://OMATUNNUS@melkki.cs.helsinki.fi/home/group/anno3/repo/trunk/src
Huom! Ainakin minulla repositoriosta jotain hakevat tai sinne
jotain vievät komennot kysyvät salasanaa kolmesti! Se ei siis ole mikään
virhetilanteen merkki, jaksakaa vaan kirjoitella sitä ;)
Jos haluat koulun hakemistoon repositorion dokumentit saat sen näin.
[directoryname] on hakemiston nimi minne haluat dokumentit.
svn checkout file:///home/group/anno3/repo/trunk/dokumentit [directoryname]
Ja lähdekoodit
svn checkout file:///home/group/anno3/repo/trunk/src [directoryname]
4. Perustyöskentely
Kun olet checkoutannut jonkin hakemiston, voit muokata sitä
aivan normaalisti omalla editorillasi. Tiedostojen siirrot, kopioinnit ja poistot
työkopion sisällä pitää kuitenkin tehdä svn:n omilla komennoilla, kuten svn copy, svn
move, svn delete
. Jos lisäät uusia tiedostoja versionhallintaan, ne pitää asettaa svn:n
hallintaan komennolla svn add tiedostonnimi
.
Työkopioosi voit päivittää muiden muutokset menemällä sen
hakemistoon ja komentamalla svn update
. Muutoksesi saat vietyä repositorioon
komentamalla työkopiosi hakemistossa svn commit -m "viestisi lokiin"
. Viestiin on
hyvä kirjoittaa edes jotain siitä, mitä olet muuttanut.
Normaali työnkulku menee suunnilleen näin:
- svn update (hakee muiden muutokset)
- muutoksia editorilla sekä svn move, svn copy, svn add ja svn delete
- svn status (näyttää työkopiosi tilan verrattuna repositorioon)
- svn commit -m "viesti" (vie omat muutokset repositorioon)
5. Nettisivujen päivityksestä
Nettisivut eli ryhmähakemistossamme oleva
public_html-hakemisto on tavallinen
svn-työkopio. Jos haluat muutoksesi versionhallinnan piiriin,
tee uusien tiedostojen lisäämisen jälkeen svn add tiedostonimi.
Jos muutat jo olemassa olevia tiedostoja, svn huomaa sen. Kun
haluat viedä muutoksesi versionhallintaan, tee public_html-hakemistossa
svn commit -m "jotain".
6. Windows-käyttö
Svn-ohjelmana kannattaa käyttää TortoiseSVN:ää.
Sen asennus tekee Windows Explorerin hiiren oikealla näppäimellä
avattavaan valikkoon omat valikkonsa, joiden kautta svn:ää
käytetään.
Asennuksen jälkeen luo Explorerissa uusi hakemisto, sitten
avaa hiiren oikean näppäimen valikko TortoiseSVN->Settings.
Aseta kohtaan Network->SSH Client clientiksi TortoisePlink.exe.
Oletuspolku sille on
C:\Program
Files\TortoiseSVN\bin\TortoisePlink.exe
. Tämän jälkeen
voit tehdä checkoutin valikon kohdasta SVN Checkout. Kohtaan URL of
Repository laitetaan yllä mainittu osoite
ja sitten vain OK. Ohjelma kysyy Windowsissakin kolmesti salasanaa,
mutta niiden syöttämisen jälkeen
pitäisi tiedostojen ilmestyä tuohon hakemistoon. Update onnistuu
valitsemalla oikean napin valikosta SVN Update
Minkä jälkeen tulee tortoisen Updateikkuna
SVN commitin voi valita samasta valikosta kuin SVN updateten minkä jälkkeen tulee alla oleva ikkuna.
7.Lisämateriaalia
Version
Control with Subversion
(Laitoksella käytössä versio 1.3 eli lukekaa nightly-versiota)
Erityisesti luvut Chapter
2. Basic Concepts ja
Chapter
3. Guided Tour