Tässä dokumentissä opastetaan lyhyesti SVN-versionhallinnan käyttöön. SVN-repositoriomme sijaitsee laitoksen koneilla osoitteessa "/home/group/muppett/svn/". Tähän hakemistoon kuitenkaan pidä koskaan kirjoittaa "käsin" mitään vaan kaikki tiedostonhallinta tulee jättää SVN-clientille (tässä dokumentissa komentoriviohjelma "svn", windowsissa esimerkiksi TortoiseSVN, tai eclipsessä jokin plugin tms). **** Komentoriviohjelman "svn" ohjeet **** Listan komennoista saat komentamalla $ svn help Ohjeita tietystä komennosta $ svn help komento **** Tietojen hakeminen SVN:stä ensimmäistä kertaa (checkout) **** Mikäli olet jollain laitoksen koneella: $ svn checkout file:///home/group/muppett/svn/ ohtusvn Mikäli olet jollain muulla koneella (vaihda username omaksesi): $ svn checkout svn+ssh://username@melkki.cs.helsinki.fi/home/group/muppett/svn/ ohtusvn joka kysyy laitoksen salasanaasi kahdesti. Tämä luo omalle koneellesi hakemiston ohtusvn ja hakee sinne kaikki tiedostot SVN:stä. **** Tietojen hakeminen SVN:stä myöhemmillä kerroilla (update) **** Mene checkouttaamaasi hakemistoon ohtusvn ja komenna $ svn update Näet tulosteen, jossa on esimerkiksi rivit U foo.txt U foo2.txt A bar.txt C baz.txt G foobar.txt D foobaz.txt At revision 9. U = updated, A = added, C = conflict, G = merged, D = deleted. On hyvä huomioida, että update päivittää nykyisen hakemiston, sekä kaikki alihakemistot mutta ei muita hakemistoja. **** Tietojen kirjoittaminen SVN:ään (commit) **** Tee muutokset tiedostoihin. Huomioi erityisesti, että mikään muutoksista ei näy toisille käyttäjille ennen commit-komentoa. - Muokkaa haluamasi tiedostoja ohtusvn-hakemistossa haluamallasi editorilla. - Merkkaa uusia tiedostoja lisättäväksi tai vanhoja poistettavaksi komennoilla add ja delete. $ svn add tiedostonimi.txt A tiedostonimi.txt $ svn delete foobaz.txt D foobaz.txt Kun olet saanut muokkauksesi valmiiksi ja haluat ne muiden saataville: - Hae muiden samaan aikaan tekemät muutokset, tässä vaiheessa voi tulla conflicteja ja mergejä (lue seuraava kappale). $ svn update At revision 9. - Katso mitä tiedostoja olet muokannut. $ svn status M foo.txt A tiedostonimi.txt D foobaz.txt ? tmp.txt M = Modified ? = Hakemistossa oleva tiedosto, jota ei ole merkattu lisättäväksi SVN:än. - Tekstitiedostojen tapauksessa voit myös katsoa muutoksesi komennolla $ svn diff tiedosto - Lähetä muutoksesi repositorioon. $ svn commit -m "Viesti, jossa kerrot lyhyesti mitä olet tehnyt" **** Konflikteista ja mergeistä **** Muutettuasi tiedostoja ja updateassasi jos joku toinen on muokannut samaa tiedostoa yrittää SVN yhdistää muutoksenne. Mikäli muutokset ovat käsittelevät tiedoston eri rivejä tämä useimmiten onnistuu. Mikäli muutokset kuitenkin käsittelevät samoja rivejä, ei SVN osaa ratkaista tilannetta vaan se kertoo konfliktista ja luo uusia tiedostoja, joiden avulla konfliktitilanteen voi ratkaista käsin. Esim: $ svn st M foo.txt $ svn update C foo.txt $ ls foo.txt foo.txt.mine foo.txt.r9 foo.txt.r10 Update siis loi uusia tiedostoja: foo.txt.mine (tiedosto, jota yritit committoida) foo.txt.r9 (version 9 tiedosto, eli tiedosto, josta lähdit editoimaan) foo.txt.r10 (version 10 tiedosto, eli tiedosto, joka on nyt SVN:ssä) foo.txt (tiedosto, jossa on yritetty yhdistää omat muutoksesi SVN:n versioon. Kohdat, joissa mergeäminen on epäonnistunut on merkitty erityissymbolirivein tiedostoon) Konfliktitilanteen ratkaiseminen: Editoi foo.txt:ä käsin kunnes olet saanut kaikki kohdat korjattua ja poistettua SVN:n lisäämät erityissymbolirivit ja komenna $ svn resolved foo.txt joka siis ainoastaan poistaa tiedostot foo.txt.mine foo.txt.r9 sekä foo.txt.r10. Ja yritä committia uudelleen! $ svn update $ svn st $ svn commit -m "..." **** Linkkejä toisiin ohjeisiin **** Virallinen ohje, hyvää luettavaa: http://svnbook.red-bean.com/en/1.4/index.html eMo-ohturyhmän svn-ohje: http://www.cs.helsinki.fi/group/emo/svn-ohje.html Subversion In Fifteen Minutes: http://www.yasashiisyndicate.org/wp-content/uploads/2006/05/subversion.html