OHJ-1400 Olio-ohjelmoinnin peruskurssi

Subversion

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).

Sisällys

Subversionin käytöstä kurssilla ja yleisesti

Svn-kaavio

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:n asentaminen

Svn löytyy useimpiin käyttöjärjestelmiin:

Svn-ohjeita tämän sivun lisäksi

Tietovaraston hakemistorakenne

Tämän kurssin harjoitustyössä Svn-tietovaraston hakemistorakenne on tehty valmiiksi seuraavasti:

Yksinkertainen ja lyhyt Svn-käyttöohje alkuun pääsemiseksi

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.

Aloitus 1: työkopion hakeminen tietovarastosta

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

Aloitus 2: Svn:n konfiguraation säätäminen

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

Tiedostojen lisääminen

  1. Luodaan tiedoston normaalisti editorilla.
  2. svn add tiedosto
    
  3. Ja vielä lopuksi, kun sopiva aika tulee
    svn commit
    

Tiedostojen talletus tietovarastoon

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

Työhakemiston tilanteen kysely

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.)

Työkopion päivittäminen tietovarastosta

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:

)

Muutosten tutkiminen

Diff-komennolla voi tutkia, mitä tallentamattomia muutoksia työkopiossa on. (Komento ei vaadi verkkoyhteyttä tietovarastoon.)

Muutosten kumoaminen

Muutoksen kumoaminen riippuu siitä, onko muutos jo tallennettu tietovarastoon (commit).

Muutoskommenttien tutkiminen

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.

Tiedostojen poistaminen, kopioiminen, siirtäminen

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).

Muita Svn-komentoja

Alla on lueteltu muita Svn:n komentoja, tarkemmat ohjeet esim. Svn-kirjasta.