Skip to content

Versionhallinta

Kuvauksen kirjoitti: Tapani Alastalo

Lyhyt kuvaus käsitteestä

Versionhallinta (version control) on ohjelmistokehityksessä eri kehitysvaiheiden aikana muokattujen tiedostojen tallentamista siten, että muutoksien eri kehitysvaiheet on kuvattu metatietona (esim versio numero) ja muutosten väliset erot ovat tarkasteltavissa. Versionhallintaa voidaan soveltaa lähes kaikessa dokumentoinnissa, eikä sitä täten tarvitse liittää pelkästään ohjelmointiin.

Versionhallintaa käytetään ensisijassa tilanteissa, missä useammalta asiakaspäätteeltä tulee päästä ajantasaiseen ohjelmakoodiin käsiksi. Versionhallintaa käytetään kuitenkin myös varmuuskopiona. Ohjelmistokehityksessä yleisimmät versionhallintatyökalut ovat Git, CVS ja SVN. Nykyään (2020) kaikista yleisesti käytetyin versionhallintajärjestelmä lienee Google Drive.

Git

Git on avoimeen lähdekoodiin perustuva versionhallintajärjestelmä, missä työskentely tapahtuu haaroissa (branch), jotka yhdistetään toisiinsa, kun esimerkiksi ominaisuus (feature) on saatu toteutettua ja testattua.

Git versionhallintajärjestelmän käytännön toteutuksessa yleisesti jokainen lataa repositoriosta halutut haarat omalle koneelle ja tekee muutokset ensin paikallisesti mieluiten erillisessä haarassa mieluiten mahdollisimman pienin ja usean muutoksen (commit) kautta.

Git versionhallinnan haasteena ovat konfliktit (conflicts) eri muutosten (commits) välillä. Näitä ilmenee kun useampi taho ja/tai useammassa haarassa tehdään muutoksia samaan tiedostoon ja kun haaroja aletaan yhdistämään vanhemman haaraan. Konfliktien välttämiseksi tulisi aina päivittää työstettävä haara vanhemman muutoksilla ennen yhdistämistä (merge) vanhempaan. Tällöin mahdolliset konfliktit voidaan testata ja korjata paikallisesti ennen yhdistämistä vanhempaan.

Yleisimmät Git hosting palveluntarjoajat ovat Github, Gitlab ja Bitbucket. Gitin käyttö ei kuitenkaan vaadi hostauspalvelua tai sellaisen voi myös pystyttää itse.

Haarat ja konfliktien välttäminen

kuva_1

Lähde: Chuka, O., Medium

Kuvassa 1 on esimerkki missä ainoastaan hotfix tehdään master haaraan, minkä jälkeen se päivitetään develop haaraan ennen julkaisua ja develop haaran yhdistämistä master haaraan. Muut ominaisuudet haarautuvat develop haarasta.

kuva_2

Lähde: Researchgate.net

Kuvassa 2 on esimerkki miten ensimmäisenä valmistunut feature(1) haara yhdistetään develop haaraan. Minkä jälkeen myöhemmin valmistuva feature(2) yhdistää develop haaran omaansa ennen kyseisen haaran yhdistämistä develop haaraaan.

Linkit ulkopuolisiin lähteisiin

Avainsanat harjoitustehtävän repositoriossa