Siirry sisältöön

Versionhallinta

Wikipediasta
(Ohjattu sivulta Versiohallinta)

Versionhallinta (engl. version control) on tekniikka, jolla pidetään kirjaa tiedostoihin (ja joskus myös paperiasiakirjoihin) tehdyistä muutoksista ja säilötään niiden vanhemmat versiot. Versionhallinnan kohteina voivat olla esimerkiksi CAD-piirustukset, erilaiset dokumentit tai ohjelmoinnissa lähdekoodi.

Lähdekoodin hallinnalla (engl. source code management) viitataan usein versiohallintaan.[1]

Koneenpiirustuksessa versiohallinta on ollut normaali menettelytapa vuosikymmeniä.

Versionhallinta tietotekniikassa

[muokkaa | muokkaa wikitekstiä]

Tietotekniikassa versiohallintaa käytetään yleisesti ohjelmistoja kehitettäessä. Ilman versionhallintaa on vaikeaa seurata eri kehittäjien tekemiä muutoksia ja ristiriitojen havaitseminen on vaikeampaa. Versionhallinnan sivuvaikutusta sanotaan passiiviseksi kommunikaatioksi, jolloin koko kehittäjäryhmä voi seurata etenemistä ja tarvittaessa palata taaksepäin. Merkittävä etu on tarvittavan viestinnän väheneminen ja päällekkäisyydet voidaan käsitellä ennen julkaisua.[1]

Versionhallintajärjestelmä tallentaa tiedostojen sisällön lisäksi luomiset ja poistamiset sekä uudelleen nimeämiset. Muutoksista tallennetaan tekijä, ajanhetki sekä muutokseen liittyviä merkintöjä ja huomioita kuten perustelut muutoksen tekemiselle.[2]

Useissa avoimen lähdekoodin ohjelmistoprojekteissa versiohallinta on yleisesti myös kehittäjäryhmän ulkopuolelta luettavissa, jolloin käyttäjillä on mahdollisuus noutaa välittömästi uusimmat muutokset ja osallistua ohjelman kehittämiseen.

Versionhallintajärjestelmät

[muokkaa | muokkaa wikitekstiä]

SCCS on yksi ensimmäisistä nimenomaan lähdekoodin hallintaan tarkoitetuista järjestelmistä.[3]

Versionhallintajärjestelmät voidaan jakaa kolmeen sukupolveen seuraavasti:[4]

  1. yksittäiset tiedostot, ei verkottamista: RCS, SCCS
  2. useampia tiedostoja, keskitetyt palvelimet: CVS, Subversion
  3. muutosjoukkoja, hajautetut palvelimet: Git, GNU Bazaar, Mercurial

Ensimmäisen sukupolven versiohallintajärjestelmät käsittelivät tiedostoja yksi kerrallaan. Rinnakkaisuusmalli perustui lukituksiin, jolloin vain yksi henkilö pystyi muokkaamaan tiedostoa kerrallaan.[4]

Toinen sukupolvi osaa käsitellä useampia tiedostoja ja tukee verkottumista. Rinnakkaisuusmalli perustui muutoksien yhdistämiseen ennen tallettamista.[4]

Kolmas sukupolvi tukee muutosjoukkoja (engl. changeset), jossa muutokset ovat jakamattomia useamman tiedoston kattavia muutoksia: tietty muutos voi vaatia muutoksen useampaan tiedostoon yhtä aikaa eikä ole sallittua jakaa eri päivityksiin. Muutosten yhdistäminen (engl. merge) ja muutosten tallettamien (engl. commit) ovat erillisiä toimintavaiheita. Rinnakkaisuusmalli sallii tallettaa muutokset ensin ja päättää jälkikäteen yhdistämisestä.[4] Git seuraa tilannekuvia (engl. snapshot), joka eroaa varhaisien järjestelmien tavasta seurata tehtyjä tiedostokohtaisia muutoksia (delta).[5]

Versionhallintajärjestelmien tavoitteita ovat:[6]

  • mahdollistaa ihmisten työskentely samanaikaisesti, ei vuorotellen
  • kun useampi ihminen työskentelee samanaikaisesti, muutosten ei pitäisi aiheuttaa konflikteja
  • halutaan säilöä kaikki versiot kaikesta (mikä muutos oli, kuka teki, milloin ja miksi)[7]

Konfiguraationhallinta

[muokkaa | muokkaa wikitekstiä]

Ohjelmiston konfiguraationhallinta (engl. software configuration management, SCM) sisältää myös muuta metatietoa ja käytetään lähdekoodin versionhallinnan rinnalla. Laajemmin konfiguraationhallinta sisältää tuotteen elinkaaren aikaiset ominaisuudet.[8]

  1. a b Source code management atlassian.com. Viitattu 2.2.2026. (englanniksi)
  2. What is version control? atlassian.com. Viitattu 3.2.2026. (englanniksi)
  3. Rochkind, Marc J.: The Source Code Control System (PDF) basepath.com. joulukuu 1975. Arkistoitu 25.5.2011. Viitattu 20.12.2017.
  4. a b c d Eric Sink: A History of Version Control ericsink.com. Viitattu 23.2.2017. (englanniksi)
  5. 1.3 Getting Started - What is Git? git-scm.com. Viitattu 3.2.2026. (englanniksi)
  6. Eric Sink: Chapter 1. Introduction ericsink.com. Viitattu 3.11.2019. (englanniksi)
  7. Chapter 1. How did we get here? hgbook.red-bean.com. Viitattu 3.11.2019. (englanniksi)
  8. Ian Buchanan: Configuration management atlassian.com. Viitattu 3.2.2026. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]