Viimeksi muutettu: $Date: 2007-06-11 11:21:57 +0300 (Mon, 11 Jun 2007) $, $Revision: 411 $.
Muista välillä vilkaista JKK (Joskus Kysytyt Kysymykset)!
Kurssin harjoitustyö koodataan Subversion-versionhallinnan avulla. Tämä sivu selostaa lyhyesti Subversionin käyttöä (tästedes lyhyesti vain Svn).
Versionhallinnan hyödyt:
Versionhallinnan käyttö on osa kurssin harjoitustyötä. Tämä tarkoittaa sitä, että sen käytön arviointi vaikuttaa osaltaan harjoitustyön arvosanaan. Sen sijaan versionhallintaan talletettujen tiedostojen aiemmat sisällöt eivät arvosanaan vaikuta, eli Svn:ään voi huoletta tallettaa testiversioita, räpellyksiä yms, jos se helpottaa harjoitustyön tekemistä.
Termejä:
Yleinen kysymys on, kuinka suuria muutoksia kannattaa kerralla tallettaa (commit) versionhallintaan. Tähän ei voi antaa mitään mekaanista ratkaisua, mutta alla on joitain mietteitä:
Svn löytyy useimpiin käyttöjärjestelmiin:
Tämän kurssin harjoitustyössä Svn-tietovaraston hakemistorakenne on tehty valmiiksi seuraavasti:
Tämä ohje toimii muistin virkistäjänä ja auttaa alkuun. Kannattaa tutustua myös muuhun Svn-materiaaliin...
Ohje käsittelee komentorivipohjaista Unix/Linux-svn:ää. Windowsin TortoiseSVN toimii kyllä samoin, mutta komennot haetaan hiiren oikealla napilla.
Alla <PORTTI> on kurssin käyttämä porttinumero (joka ilmoitetaan kurssilla) ja <RYHMA> on ryhmänne nimi (myös kurssikohtainen).
svn checkout https://kurssisvn.cs.tut.fi:<PORTTI>/ryhmat/<RYHMA>/trunk nimi_hakemistolle
Ennen harkkatyön aloittamista Svn:lle täytyy kertoa, että C++-tiedostot ovat tekstitiedostoja, joihin tehdään avainsanakorvaukset ($Id$, $Date$ jne, kuten RCS:ssä) samoin kuin merkistö- ja rivinvaihtomuunnokset käyttöjärjestelmien välillä.
Svn:n konfigurointitiedoston loppupuolelta täytyy rivin
# enable-auto-props = yes
alusta poistaa kommenttimerkki "#" ja sen perässä oleva sanaväli. Lisäksi ko. tiedoston loppuun pitää lisätä seuraavat rivit (tiedostona).
*.cc = svn:eol-style=native;svn:keywords=Author Date Id Revision *.hh = svn:eol-style=native;svn:keywords=Author Date Id Revision *.cxx = svn:eol-style=native;svn:keywords=Author Date Id Revision *.hxx = svn:eol-style=native;svn:keywords=Author Date Id Revision *.cpp = svn:eol-style=native;svn:keywords=Author Date Id Revision *.hpp = svn:eol-style=native;svn:keywords=Author Date Id Revision *.c = svn:eol-style=native;svn:keywords=Author Date Id Revision *.h = svn:eol-style=native;svn:keywords=Author Date Id Revision *.txt = svn:eol-style=native Makefile = svn:eol-style=native;svn:keywords=Author Date Id Revision
svn add tiedosto
svn commit
Talletetaan kaikki muutokset
svn commit
Talletetaan vain tietyt tiedostot
svn commit tiedosto1 tiedosto2...
Ylläolevat avaavat editorin muutoskommenttia varten (käytetyn editorin määrää EDITOR-ympäristömuuttuja). Toinen mahdollisuus on antaa commit-sanan perään -m-vipu ja kommentti lainausmerkeissä:
svn commit -m "Muutettiin jotain" tiedosto
Tilannekysely tulostaa jokaisen työkopion tiedoston muutostilan. (Kysely ei vaadi verkkoyhteyttä tietovarastoon.)
svn status
Status-komennon tulostamien kirjainten merkitys:
(Status-komento ei tulosta mitään tiedostoista, joista Svn:n on käsketty olemaan välittämättä. Harjoitustyön tapauksessa tällaisia ovat .o- ja ~-loppuiset tiedostot.)
svn update
Komento update näyttää tietovarastosta haetut muutokset samaan tapaan kuin status-komento. Uusia tai tärkeitä ovat seuraavat koodit:
Viimeisessä tapauksessa päällekkäiset muutokset näkyvät tiedostossa seuraavaan tapaan:
Koodia <<<<<<< .mine Oma muutos ======= Tietovaraston muutos >>>>>>> .r# Vielä koodia
Tiedosto pitää nyt muokata käsin "kelvolliseen" kuntoon (esim. valitsemalla toinen muutoksista tai yhdistelemällä ne käsin). Tietysti myös erotinrivit (<<<, ===, >>>) pitää poistaa. Korjauksen jälkeen tiedosto pitää vielä julistaa "valmiiksi" komennolla
svn resolved tiedosto
(Konfliktin sattuessa Svn luo myös väliaikaisesti seuraavat tiedostot, joita voi halutessaan käyttää avuksi konfliktin tutkimisessa:
)
Diff-komennolla voi tutkia, mitä tallentamattomia muutoksia työkopiossa on. (Komento ei vaadi verkkoyhteyttä tietovarastoon.)
svn diff
svn diff tiedosto
svn diff -rRevisionumero tiedosto
svn diff -rRev1:Rev2 tiedosto
Muutoksen kumoaminen riippuu siitä, onko muutos jo tallennettu tietovarastoon (commit).
svn revert tiedosto
svn merge -rRev2:Rev1 tiedosto (HUOM! Numeroiden järjestys "käänteinen"!) (Tutkitaan, että on tapahtunut mitä pitikin) svn commit
Log-komento tulostaa tiedostoa tai hakemistoa koskevat muutoskommentit
svn log tiedosto/hakemisto
Jos halutaan nähdä myös luettelo muutetuista tiedostoista, lisätään log-komennon perään vipu -v. Tietyn revisiovälin voi valita vivulla -rRev1:Rev2.
Svn:n alaisten tiedostojen poistaminen, kopioiminen ja siirtäminen on tehtävä Svn:n avulla (muuten historia ei kopioidu oikein). Kaikki alla olevat komennot vaativat vielä muutoksen talletuksen (commit).
svn rm tiedosto
svn cp vanha uusi
svn mv vanha uusi (tai svn rename vanha uusi)
Alla on lueteltu muita Svn:n komentoja, tarkemmat ohjeet esim. Svn-kirjasta.