Versionhallinta
Jan Porema
OH5
- Ohjelmistoprojektin tuotosten hallintaa jokamahdollistaa ohjelmiston kehityksen seurannan ja vakaankehityksen
- Siinä ohjelmistoprojektin  asiakirjoista jakomponenteista muodostetaan konfiguraatio-objekteja jaedelleen konfiguraatioita
Mitä versionhallinta on?
- versiointi
voidaan jakaa historialliseen, loogiseen ja yhteistoiminnalliseenversiointiin.
Historiallinen versiointi on kehitystä, jossa uudempi versiosyrjäyttää aiemman. Tällaisia syrjäyttäviä versioita kutsutaanrevisioiksi.
Looginen versiointi on niin kutsuttujen haarojen luomista,jossa kukin haara kuvastaa kehityksen vaihtoehtoista kulkua.Haarat etenevät omaa kehityskaartaan muista haaroistariippumatta
Yhteistoiminnallinen versiointi on väliaikaisuuden hallintaasiten, että tarkoituksena on luoda hetkellisiä versioitakomponenteista, jotka tullaan myöhemmin integroimaantoisten versioiden kanssa.
Neljä päätoimenpidettä:
- versioiden merkitseminen
kuvaa niitä menetelmiä, joita sovelletaan tietyn konfiguraatio-objektinyksikäsitteiseksi nimeämiseksi.
Historiallisessa versioinnissa revisiot järjestetään ja ne identifioidaanjärjestyksen mukaan. Identifioiminen voidaan tehdä esimerkiksinumeerisesti siten, että suurin luku viittaa viimeisimpään revisioon.Tällöin revisioita merkittäessä käytetään yleensä kaksitasoistanumerointia muodossa [V.R], missä V kuvastaa julkaisunumeroa ja Rtasonumeroa. Julkaisunumeroa kutsutaan myös versionumeroksi jatasonumeroa revisioksi. Julkaisunumeron muutos kuvastaa suurtamuutosta ja revisionumeron muutos pienempää muutosta.
Loogisen ja yhteistoiminnallisen versioinnin yhteydessä esiintyvienvarianttien merkitsemiseen käytetään useimmiten määrättyjä nimiänumeroinnin sijaan, koska variantit eivät välttämättä esiinny toistensasuhteen järjestyksessä.
-versioiden välisten erojen tunnistaminen
päätavoite on minimoida versioiden tallentamiseen käytettävä levytila.Toisin kuin versionhallinnan muut toimenpiteet, versioiden välistenerojen tunnistaminen ei ole välttämätöntä
Ohjelmistoon tehtyjen muutosten selvittämiseksi täytyy voidaselvittää versioiden väliset erot. Koska toisiaan seuraavat versiot,eritoten revisiot, saattavat olla hyvin toistensa kaltaisia,eroavaisuuksien tarkan määrittelyn avulla voidaan keskittyämuutokseen ja säästää resursseja.
Yleinen tapa erojen tunnistamiseen on suorittaa merkkivertailutekstitiedostojen välillä. Kyseisen tavan tavoitteena on löytää pieninjoukko muutoksia, jotka täytyy suorittaa komponentin version Amuuttamiseksi versioksi B. Toimii vain tekstitiedostoja käsitellessä,sillä esimerkiksi binääritiedostoissa pieni paikallinen muutos saattaatiedoston rakenteesta riippuen vaikuttaa koko tiedoston sisältöön.
-versioiden tallentaminen.
tarkoituksena on mahdollistaa versioiden pysyvä tallennus, jostamielivaltaisella ajanhetkellä voidaan valita haluttu versio käsiteltäväksi
Ohjelmistojen kehityksen ja ohjelmiston aikaisempien versioidenuudelleenrakentamisen mahdollistamiseksi on vanhat ja uudet versiotvoitava tallentaa pysyvästi
Usein varastoissa käytetään tallentamiseen puurakennetta, jossa puunjuuri kuvastaa konfiguraatio-objektin ensimmäistä versiota ja juurenjälkeläiset kuvastavat konfiguraatio-objektin myöhempiä versioita.Historiallinen versionti on puun syvyyden kasvattamista ja looginenversiointi puun haarautumista
Tilansäästön vuoksi varastoihin tallennetaan eri versioista vain niidenväliset erot. Tämä muutostieto on minimaalinen muutosjoukko, jonkaperusteella komponentin tietty versio A voidaan muuntaa versioksi B.
Edut
- Inhimillisten virheiden mahdollisuus vähenevät japrojektienhallinta helpottuu
- Useat ohjelmoijat eri puolilla maailmaa voivat koodatasamaa projektia, pysyen koko ajan mukana siinä mitä muuttekevät ja saaden koko ajan uusimmat muutokset
Versionhallintajärjestelmät
- Ensimmäiset kehitettiin 1970 luvulla
- Jaetaan hajautettuihin ja keskitettyihin
- Nykyään tarjolla monia kaupallisia ja vapaitaversionhallintajärjestelmiä, muun muassa CVS, Subversion,BitKeeper sekä Git
CVS
- CVS on RCS:n pohjalle rakennettu vapaa monen käyttäjänversionhallintajärjestelmä.
Varsinaisen CVS:n ensimmäisen version suunnitteli ja ohjelmoiC-kielellä Brian Berliner vuonna 1989.
Yksinkertaisimmillaan työskentelyyn kuuluu kolme vaihetta.Ensimmäisessä vaiheessa projektista ladataan niin sanottutyökopio lokaalille koneelle. Tätä tapahtumaa kutsutaan nimellächeck out. Toisessa vaiheessa projektin työkopiota voidaanmuokata vapaasti CVS:stä riippumatta ja kolmannessa vaiheessatyökopioon tehdyt muutokset kirjataan CVS:ään. Muutostenkirjaamista CVS:ään kutsutaan nimellä commit. Muutostenkirjaamisen jälkeen muutokset ovat näkyvissä kaikille projektinkehittäjille, jotka kukin kehittäjä voi edelleen päivittää omiintyökopioihinsa.
Subversion
- Subversion on uusi vapaa versionhallintajärjestelmä
Sen tarkoitus on ennen kaikkea korjata CVS:ssä havaittujapuutteita ja lisätä CVS:stä puuttuvia, mutta yleisestitarpeellisiksi koettuja ominaisuuksia.
Subversion on rakennettu CVS:n pohjalta, minkä takiaSubversionin toiminta ja käyttö ovat monella tapaasamantyylisiä CVS:ään verrattuna.
Parannuksina on tullut muun muassa uudelleennimeämisten jametadatan versiointi, BerkeleyDB-tietokannankäyttömahdollisuus sekä tehostettu binääritiedostojen käsittely
BitKeeper
- BitKeeperin kehityksen aloitti Larry McVoy ja sen omistaaBitMover-yhtiö.
 CVS:ään verrattuna BitKeeper tarjoaa ominaisuuksia, jotkahelpottavat versionhallintaa suurissa, maantieteellisestihajautetuissa projekteissa.
BitKeeper voi käyttää eri protokollia, kuten SSH:ta, RSH:ta,BKD:ta, HTTP:ta ja SMTP:tä päivitysten tekemiseen.
BitKeeper toimii hajautetusti siinä mielessä, että jokaisellakehittäjällä on omalla koneellaan täydellinen kopio projektinvarastosta. Tätä kopiota kutsutaan lapseksi ja päävarastoavanhemmaksi. Kun kopio on kerran tehty, kehittäjän koneen japäävaraston välillä siirretään vain tietoa tehdyistä muutoksista.Lapsivarastot voivat vaihtaa muutostietoa myös keskenään
Git
 Linus Torvaldsin Linuxin kerneliä varten itsekehittämä vapaaversionhallintaohjelma
Hajautettu systeemi samalla tavoin kuin BitKeepeerissä
Etuna moniin muihin verrattuna muun muassa nopeus