Kapsin logo

Kapsi Internet-käyttäjät ry

SVN-versionhallintajärjestelmä

Versionhallinta tarkoittaa järjestelmää, joka ylläpitää listaa tiedostojen muutoksista. Versionhallinnasta saa siten haettua myös tiedoston vanhemmat versiot, sekä listattua muutokset. Tässä ohjeessa käsitelty SVN on yksi esimerkki versionhallintaohjelmistosta.

Tiedostojen hakeminen

Tiedostot saa haettua helposti komennolla checkout näin:

$ mkdir ~/svn
$ cd ~/svn
$ svn checkout http://svn.kapsi.fi/helloworld/
A  helloworld/configure
A  helloworld/AUTHORS
 ...
A  helloworld/NEWS
A  helloworld/install-sh
Checked out revision 39.

SVN:ssä tiedostojen jokainen muutos säilyy periaatteessa ikuisesti. Vanhemman version voi aina hakea lisäargumenteilla komennolle svn checkout.

Muutokset

Tiedostojen hakemisen jälkeen tiedostoja voi muuttaa sellaisenaan. Kun haluat päivittää muutokset tiedostoon svn-serverille, auttaa seuraava komento. Komento pyytää myös lokimerkinnän, mitä muutos koskee.

Voit komentaa svn commit:

$ cd helloworld
$ svn commit src/cchello.c
Sending        src/cchello.c
Transmitting file data .
Committed revision 40.

Päivityksen ajaminen ennen muutoksien tekemistä (seuraava kappale) voi olla normaalisti hyvä idea.

Tiedoston nimen muuttaminen tai siirtely

SVN tukee tiedostojen nimen muuttamista ja paikan siirtelyä samaan tyyliin kuin UNIX-komento mv. Tämä on yksi huomattavista eroista esimerkiksi CVS:ään.

$ svn move src/test.sh src/test2.sh
A         src/test2.sh
D         src/test.sh

Huolimatta A- ja D-merkinnöistä, svn move on eri asia kuin svn remove ja svn add. Se säilyttää tiedoston historiamerkinnät toisin kuin manuaalinen poistaminen ja lisäys.

Tietojen päivittäminen

Jotta tiedot eivät vanhennu muiden kehittäjien muutoksista, ne on hyvä päivittää säännöllisesti.

$ svn update
U  src/cchello.c
Updated to revision 40.

Työkopion muutokset

SVN:ssä on komento svn status, jolla voi mihinkään koskematta tarkistaa, mitä tiedostoja olet muuttanut. Se ei päivitä toisten kehittäjien muutoksia kuten CVS:ssä joutui tekemään.

$ svn status
?      Makefile.in
?      autom4te.cache
?      configure.scan
?      aclocal.m4
?      src/Makefile.in
M      src/cchello.c

M tarkoittaa, että tiedostoa on muutettu. ? tarkoittaa tuntematonta tiedostoa (se ei ole SVN-palvelimella). Näille merkinnöille näkee tarkemmat määritykset komennolla svn help status.

Jos et ole varma, mitä muutoksia olet tehnyt tiedostoon src/cchello.c, voit katsoa ne komennolla svn diff.

$ svn diff src/cchello.c 
Index: src/cchello.c
===================================================================
--- src/cchello.c       (revision 40)
+++ src/cchello.c       (working copy)
@@ -4,7 +4,7 @@
  */
 
 #ifdef HAVE_CONFIG_H
-#include <config.h<            // for autotools _WITH_*
+# include <config.h<   // for autotools _WITH_*
 #endif
 
 #include <stdio.h<             // for printf

Uuden tiedoston lisääminen

Lisää uusi tiedosto ja aja:

$ svn add tiedosto.txt
A         tiedosto.txt
$ svn commit tiedosto.txt

Lisätietoja

Lisää ohjeita löytyy komennolla svn help tai Internetistä. Esimerkiksi kirjassa Version Control with Subversion on monipuolisempia esimerkkejä.