Versiointia usealla projektilla

Olen käyttänyt kotiprojekteissani Subversion-versionhallintaa nyt kuukauden päivät. Kokemukset ovat tähän asti olleet pelkästään positiivisia. Tosin näin osasin odottaakin, sillä on kyseinen työkalu ollut jo pitkään käytössäni työelämän projekteissani. Ohjelmoinnissa on alkuajoista asti pyritty uudelleenkäytettävään ohjelmakoodiin. Jos joku joskus kehittää jonkin hyvän ohjelmanpätkän tai algoritmin, on sellaista aikaansaannosta syytä luonnollisesti käyttää keksimättä pyörää uudelleen. Tyypillisimmillään nämä uusiokäytettävät koodit ovat koodikirjastoja, joissa on valmiita funktioita, rutiineja, aliohjelmia, luokkia ja kaikkea ohjelmoinnissa yleisesti tarvittavia komponentteja. Uudelleenkäyttävyys nopeuttaa ohjelmistojen tuottamista ja samalla myös vähentää ohjelmointivirheitä, koska nämä kirjastot ovat yleensä hyvin testattuja. Uusiokäyttö on arkipäivää myös omissa projekteissani.

Työskentelen ajoittain parin projektin kimpussa. Nämä kaksi projektia käyttävät yhteistä ohjelmakirjastoa. Tarkalleen ottaen myös tämä ohjelmakirjastokin on oma itsenäinen projektinsa vaikkakaan sitä ei käytetä sellaisenaan vaan osana muita tuotoksia. Versionhallinnan kannalta kyseessä on joka tapauksessa oma itsenäinen tietovarastonsa, joten versionhallinnan alaisuudessa on kaikkiaan kolme projektia. Tähän asti projektieni käsittely on sujunut joustavasti, kun olen vain yksinkertaisesti lisännyt polkumäärityksen yhteiseen kirjastoon. Tämän käytännön varjopuolena vain on ylläpidon hankaluus. Kun aikanaan vien projektin tuotantoon, pitää muistaa kopioida myös yhteinen kirjasto mukaan. Jos kirjastoon tulee muutoksia, niin nekin pitäisi muistaa viedä tuotantoon. Polkumääritys on tähän asti vapauttanut tältä ongelmalta. Tuotannossa polutus ei enää toimikaan, koska siellä projektit ovat itsenäisiä eikä niillä ole pääsyä kirjaston edellyttämään yhteiseen levyjakoon. Näin ollen kirjasto onkin siis järkevä kopioida osaksi projektia. Tästä puolestaan seuraa tuo kyseinen ylläpito-ongelma.

Versionhallinta tulee avuksi tällaisessa monen projektin kokoonpanossa. Kaikki kolme projektia elävät edelleen kukin omaa elämäänsä. Kirjastoprojekti kopioidaan osaksi kahta muuta projektia. Vaikka kirjastoon ajoittain tuleekin muutoksia, niin versionhallinta hoitaa ne automaattisesti myös toisen projektin kopioon kyseisestä samasta kirjastosta. Temppu on vieläpä hyvin helppo ja nopea suorittaa. Yksinkertaisimmillaan sen voi tehdä NetBeans-editorissa. Oletuksena vain on, että tätä ennen kaikki projektit on viety versionhallintaan. Tämän jälkeen valitaan kirjastosta riippuvaisen projektin haara Projects-ikkunasta. Hiiren oikeanpuoleisella painikkeella Subversion-alavalikko ja sieltä avataan Svn Properties -ikkuna. Ikkunan Property Name -pudotusvalikosta valitaan svn:externals ja Property Value -kenttään kirjoitetaan mukaan tuotavan kirjaston tuleva sijainti käsiteltävänä olevan projektin hakemistorakenteessa sekä osoite versionhallintaan, molemmat arvot välilyönnillä erotettuina. Alla on esimerkki Property Value -kenttään tulevasta arvosta.

library file:///X:repo/kirjastoprojekti/library

Tässä esimerkissä ensimmäinen sana library luo tarvittaessa samannimisen hakemiston projektin juureen. Toinen arvo välilyönnin oikealla puolella kertoo, mistä lähdekoodi noudetaan. Esimerkissä protokollana on tiedostokäsittely file: ja X merkkaa levyaseman tunnusta, repo on Subversion Repositoryn nimi, jonka jälkeen tulee kirjastoprojektin nimi ja lopuksi mahdollinen yksittäinen hakemisto sieltä. Kun tämän asetuksen on asettanut projektille, enää on jäljellä viimeinen toimenpide eli projektin päivitys ajan tasalle. Valitsemalla nyt Subversion-valikosta Update-komennon kopioituu kirjastoprojekti osaksi työn alla olevaa projektia omaan paikalliseen library-kansioonsa. Sama temppu tehdään siinä toisessakin projektissa, jonka jälkeen kirjastoprojektiin voi tehdä muutoksia kummassa tahansa pääprojektissa. Muutokset viedään versionhallintaan normaalin tapaan Commit-komentoa käyttämällä ja toisessa pääprojektissa ne päivittyvät Update-komennolla.

Subversion-versionhallinnan externals-ominaisuus on kätevä apu silloin, kun pitää työskennellä useiden projektien kanssa, jotka käyttävät yhteistä aliprojektia. Ominaisuus tukee useita aliprojekteja, jotka yksinekertaisesti vain lisätään kukin omalle rivilleen. Tämän jälkeen työskentely on helppoa ja versionhallinta hoitaa loput.

Julkaistu perjantaina 9.7.2010 klo 18:51 avainsanoilla ohjelmistot ja ohjelmointi.

Edellinen
Fiksu sivusto
Seuraava
Kesänovelli 2010
Evästeiden käyttö

Käytän sivustollani evästeitä tarjotakseni parhaimman mahdollisen lukukokemuksen blogini lukijoille. Jos jatkat sivustoni käyttöä, oletan, että hyväksyt evästeiden käytön sivustollani.

Lisätietoja evästeiden käytöstä