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
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.
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
- 15 Best Version Control Software
- Günther, T.: 14 Git Hosting Services Compared
- Laurikkala, J.: Versionhallinta ja Git