Ville-Pekka Vainio
Versio | Kuvaus |
1.0 | Ensimmäinen versio |
Tässä hieman tietoa versionhallinnasta niille, joilla ei ole asiasta kokemusta.
Versionhallinta perustuu ns. repositorioon (tiedostovarasto tms, hyvää suomennosta en ole vielä kuullut...). 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.
Repositoriomme sijaitsee hakemistossa /home/group/emo/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.
Työkopio haetaan repositoriosta svn checkout -komennolla. Voit "checkoutata" minkä tahansa alihakemiston mitä repositoriossa on. Käytännössä tulet todennäköisesti tarvitsemaan public_html/ ja src/trunk/ -hakemistoja. Esimerkiksi nettisivujen editointia varten public_html-hakemistosta työkopion saa komennolla:
svn checkout
svn+ssh://OMATUNNUS@melkki.cs.helsinki.fi/home/group/emo/repo/public_html
Vastaavasti src/trunk/ -hakemistosta (siis lähdekoodit) saa työkopion komennolla:
svn checkout
svn+ssh://OMATUNNUS@melkki.cs.helsinki.fi/home/group/emo/repo/src/trunk
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ä ;)
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:
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".
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 ja commit vastaavasti.
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