Viikon VALO #102

Subversion

Subversion on versionhallintajärjestelmä, varsin suosittu vapaissa ohjelmistoprojekteissa.

 Versionhallinnalla hallitaan muutosta. Erityisesti ohjelmistoprojekteissa on tarpeen pitää kirjaa ohjelmakoodiin tehdyistä muutoksista. Versionhallintajärjestelmä näyttää milloin ja mikä muutos on tehty, kuka sen teki ja mahdollisesti muutakin tietoa. Versionhallintajärjestelmästä on saatavilla halutun tiedoston vanhakin versio, tai voi verrata tiedoston kahta versiota. Tästä on hyötyä, jos ohjelma toimi toissapäivänä mutta ei toimi nyt, ja halutaan nähdä mitä on muuttunut.

Ohjelmistoprojektien lisäksi mitä tahansa projektia, jossa käsitellään tiedostoja voi pyrkiä saamaan ruotuun versionhallinnalla. Erityisesti versionhallinta sopii, jos tiedostot ovat tekstitiedostoja, koska tällöin versionhallintajärjestelmä pystyy muodostamaan deltan, eli kahden peräkkäisen tiedostoversion välisen eron. Tästä on hyötyä tallennustilan säästönä, voidaan esimerkiksi tallentaa tiedoston ensimmäinen versio kokonaan ja sen jälkeen vain deltat, joista sitten pystytään muodostamaan tiedoston haluttu versio.

Versionhallintajärjestelmiä on useita. Yksi varsin suosittu on Subversion. Subversion kehitettiin alun perin CVS:n korvaajaksi. Tavoitteena oli lisätä CVS:tä puuttuvat ominaisuudet ja korjata kiusaavat viat. Projekti keskittyi tavoitteeseensa eikä alkanut kehittämään versionhallintajärjestelmää joka korvaisi kaikki versionhallintajärjestelmät, niinpä projekti valmistuikin ajallaan ja lopputulos oli hyvä. Wikipedia vertailee versionhallintajärjestelmiä: Comparison_of_revision_control_software.

Toinen tunnettu ja suosittu vapaa versionhallintajärjestelmä on Git. Toisin kuin Subversion, Git on hajautettu versionhallintajärjestelmä, ts. jokainen "asiakas" tallentaa kaiken projektin tiedon ja voi toimia myös "keskuspalvelimena". Git suunniteltiin nimenomaan Linux-ytimen kehitysprojektille, mutta käyttäjiä on hyvin paljon muitakin. Tässä pikakurssissa näytetään miten sama asia tehdään Git:llä ja Subversionilla.

Käytettäessä versionhallintaa noudetaan ensin työkopio versionhallinnan varastoalueelta (check-out). Terminologia vaihtelee hieman eri versionhallintajärjestelmissä, mutta Subversionissa varastoalue nimetään repositoryksi. Työkopiota muokataan, eli tiedostoja muutetaan, lisätään tai poistetaan. Tässä vaiheessa tulisi tarkistaa työkopion tiedostojen olevan kunnossa, esimerkiksi ohjelmoitaessa katsotaan ettei kääntäjä ilmoita virheistä tiedostoissa. Työkopio tallennetaan varastoalueelle toiminnolla commit (eli tehdään check-in). Tästä työnkulusta on kaavio kuvassa SVN Työnkulkukaavio.

Projektin muut työntekijät menettelevät samalla tavalla. Muiden tekemät muutokset saa omaan työkopioonsa tekemällä svn update, se noutaa varastoalueelta muutokset omaan työkopioon. Tämän jälkeen varastoalue ja oma työkopio ovat synkronissa.

Halutun version voi merkitä, eli tehdään sille tag. Komennolla svn copy luodaan nimetty snaphot, jossa on halutun version mukaiset tiedostot koko projektista. Esimerkiksi julkaistaessa versio halutaan myöhemminkin päästä käsiksi tiedostoihin juuri sellaisina kuin ne olivat versiota julkaistaessa.

$ svn copy http://svn.example.com/repos/calc/trunk \
   http://svn.example.com/repos/calc/tags/release-1.0 \
   -m "Tagging the 1.0 release of the 'calc' project." \
Committed revision 902.

Kun julkaisun jälkeen jatketaan projektin kehittämistä, tarvitaan kehityshaaroja. Seuraavaa versiota kehitetään päähaarassa (joka Subversionissa on trunk), vanhaan versioon tehdään korjauksia sivuhaarassa joka nimetään julkaistun version mukaan tai miten nyt halutaan. Vanhan version vikoja korjaavat ohjelmoijat noutavat työkopiokseen sivuhaaran, uutta versiota kehittävät käyttävät päähaaraa. Tarvittaessa voidaan limittää muutoksia haarojen välillä, esimerkiksi sivuhaarassa on korjattu vika joka on myös päähaarassa, tällöin limitetään muutos päähaaraan (svn merge).

Subversion ja muutkin versionhallintajärjestelmät toimivat myös varmuuskopiona. Kun käsiteltävät tiedostot on tallennettu versionhallintaan, ovat tiedostot sieltä saatavissa jos onnistuu hävittämään ne työkopiostaan. Mikäli versionhallinnan varastoalue on etäkoneella, saa versioidut tiedostot takaisin vaikka oma tietokone tuhoutuisi kokonaan.

Subversionin ensimmäinen versio julkaistiin 12 vuotta sitten 20. lokakuuta vuonna 2000. Hieman historiaa Subversionista. Uusin versio 1.7.7. julkaistiin 9. lokakuuta 2012, varsin tuore siis. Kehitys jatkuu.

Kotisivu
http://subversion.apache.org
Lisenssi
Apache License, versio 2.0.
Toimii seuraavilla alustoilla
Android, Linux, Mac OS X, Unix, Windows, luultavasti kaikille muillekin käyttöjärjestelmille.
Asennus
Linux-jakeluissa löytyy jakelun omista pakettivarastoista. Muille käyttöjärjestelmille kotisivulta tai muualta, Androidille esimerkiksi Google Play tarjoaa ilmaisia ja maksullisia subversion-ohjelmia.
Käyttöohjeet
Erinomaiset käyttöohjeet ovat saatavilla vapaana kirjana, joka on julkaistu samalla ASL käyttöoikeudella kuin ohjelmakin
Youtubessa on viiden minuutin video Subversionin olemuksesta ja versionhallinnan tarpeellisuudesta

Teksti: Taleman
Kuvat: Taleman, Pesasa