Versionhallintajärjestelmät

RCS

RCS on yhden käyttäjän vapaa versiohallintajärjestelmä. Sen kehityksen aloitti Walter
Tichy 1980-luvun alkupuolella Purduen yliopistossa Yhdysvalloissa.
RCS on kehitetty Source Code Control Systemin (SCCS) pohjalta. Siihen verrattuna RCS
toimii tehokkaammin säilyttämällä kustakin tiedostosta uusimman version kokonaisuudessaan sekä aikaisemmista versioista vain niiden eroavaisuudet seuraavaan
verrattuna. Hallittavat tiedostot voivat ohjelmakoodin lisäksi olla mitä tahansa dokumentteja.
RCS käyttää historiallista ja loogista versiointia. Versiointi on toteutettu puurakenteella tallentaen dokumenteista vain viimeisimmät versiot kokonaisuudessaan. Sivuhaaroista tallennetaan
eroavaisuudet rekursiivisesti haarautumiskohdasta lähtien. Näin päähaaran uusin versio on nopeasti saatavilla, eikä uuden version lisääminen vaadi kuin sen tallentamisen sekä uuden deltan muodostamisen edeltävää versiota varten. Versioiden eroavaisuuksien tunnistamiseen käytetään diff-ohjelmaa.
Versioiden identifiointi tapahtuu RCS:ssä historiallisen versioinnin tapauksessa kuten aiemmin on kuvattu. Tasonumerointi toimii automaattisesti siten, että uusi versio saa yhtä suuremman numeron edelliseen verrattuna. Halutessaan käyttäjä voi suurempien muutoksien jälkeen kasvattaa myös julkaisunumeroa. Myös loogisessa versioinnissa eli puun haarautuessa, versiot tunnistetaan numeroiden perusteella. Jos esimerkiksi versiosta 1.3 luodaan haara, sille annetaan numero 1.3.1. Varsinaisen haaraan kuuluvan version tunnukseen kuuluu vielä neljäs numero, joka muodostetaan tasonumeroinnin tapaan. Haaran 1.3.1 versioita ovat esimerkiksi 1.3.1.1 ja 1.3.1.2. Jos versiosta 1.3 luodaan uusi, erillinen haara, se saa numeron 1.3.2.
RCS:n peruskäyttöön tarvitaan vain komennot ci ja co. Komento ci tiedosto.c lisää järjestelmään uuden tiedoston. Komennolla co tiedosto.c tiedoston voi hakea järjestelmästä muokattavaksi. Muokkauksen tuloksena syntynyt uusi versio lisätään puuhun komennolla ci tiedosto.c.
Jos RCS:llä on useita käyttäjiä, käyttäjän tulee aina lukita versio ottaessaan sen muokattavaksi. Tästä seuraa RCS:n suurin ongelma; kutakin tiedostoa voi muokata vain yksi käyttäjä kerrallaan, vaikka eri henkilöt muokkaisivat eri osia tiedostosta. Pakottavassa tilanteessa lukitus on mahdollista murtaa, mutta tästä seuraa helposti ongelmia.
Lisäksi RCS käsittelee vain yksittäisiä tiedostoja, vaikka useimmissa tapauksissa ohjelmiston versio muodostuu useiden lähdekooditiedostojen kokonaisuudesta.
RCS ei myöskään tarjoa minkäänlaisia verkko-ominaisuuksia, vaan usean kehittäjän projektissa tiedostot tulee hakea siltä koneelta, jossa järjestelmä sijaitsee. Näin ollen RCS ei ole joustava järjestelmä suuremmissa usean kehittäjän projekteissa.

CVS

CVS on RCS:n pohjalle rakennettu vapaa monen käyttäjän versiohallintajärjestelmä.
Järjestelmän kehitys lähti liikkelle Dick Grunen 1986 julkaisemista shell-skripteistä,
jotka helpottivat RCS:n käyttöä. Nykyisessä järjestelmässä kyseistä koodia ei enää
ole jäljellä, mutta CVS:n käyttämät konfliktinhallinta-algoritmit ovat pääosin sieltä
peräisin. Varsinaisen CVS:n ensimmäisen version suunnitteli ja ohjelmoi C-kielellä
Brian Berliner vuonna 1989.
CVS tallentaa tiedostojen versiot samaan tapaan kuin RCS, ja CVS:n ensimmäiset
versiot itse asiassa käyttivät tähän RCS:n ominaisuuksia. CVS kuitenkin pitää kirjaa
tiedostojen sijaintihakemistosta ja osaa yhdistää useita hakemistoja yhdeksi kokonaisuudeksi.
Näin pystytään hallitsemaan yhtenäistä, useista tiedostoista koostuvaa
projektia. Lisäksi CVS mahdollistaa yhteistoiminnallisen versioinnin,
sillä revisiopuuhun luotu haara on myöhemmin mahdollista yhdistää päähaaraan.
CVS tekee eron version ja revision välillä. Revisiot ovat versioita yksittäisestä tiedostosta ja ne numeroidaan samaan tapaan kuin RCS:ssä. Versio sen sijaan tarkoittaa
koko sovelluksen versiota, joka koostuu usean tiedoston revisioista. Tällainen versio
voidaan määritellä esimerkiksi annettaessa sovellus asiakkaalle testattavaksi.
CVS ei estä useita kehittäjiä muokkaamasta samaa tiedostoa yhtä aikaa, vaan
järjestelmä osaa yhdistää eri kehittäjien tekemät muutokset. 1990-luvun alussa järjestelmään lisättiin myös verkko-ominaisuudet, jolloin projektin tuotoksiin saattoi
tarvittaessa päästä käsiksi kaikkialta Internetistä. Juuri näinä aikoina CVS saavutti
runsaasti suosiota erityisesti vapaan ohjelmistonkehityksen piirissä.
Työskentely CVS:ää käyttäen tapahtuu niin sanotun kopioi-muokkaa-yhdistä -mallin
mukaisesti (vrt. RCS:n käyttämä lukitse-muokkaa-vapauta -malli). Yksinkertaisimmillaan
työskentelyyn kuuluu kolme vaihetta. Ensimmäisessä vaiheessa projektista
ladataan niin sanottu työkopio lokaalille koneelle. Tätä tapahtumaa kutsutaan
nimellä check out. Toisessa vaiheessa projektin työkopiota voidaan muokata vapaasti
CVS:stä riippumatta ja kolmannessa vaiheessa työkopioon tehdyt muutokset kirjataan
CVS:ään. Muutosten kirjaamista CVS:ään kutsutaan nimellä commit. Muutosten
kirjaamisen jälkeen muutokset ovat näkyvissä kaikille projektin kehittäjille,
jotka kukin kehittäjä voi edelleen päivittää omiin työkopioihinsa.

GNU arch

GNU arch on avoimen lähdekoodin hajautettu versionhallintajärjestelmä, jonka kehitys on päättynyt.
GNU arch on vaikuttanut useiden muiden versionhallintajärjestelmien kehitykseen kuten Git, Mercurial ja GNU Bazaar.

Monotone

Monotone on avoimen lähdekoodin hajautettu versionhallintajärjestelmä, joka asettaa suuremman painoarvon tiedon yhtenäisyydelle (engl. integrity) ja luotettavuudelle kuin suorituskyvylle.
Monotone käyttää kryptografisia toimintoja sekä muutoshistorian seuraamiseen että käyttäjätoimintojen autentikoimiseen.

BitKeeper

BitKeeper on BitLogic:n kaupallinen versiohallintajärjestelmä, joka soveltuu erityisen hyvin
suuriin, hajautettuihin projekteihin. BitKeeper toimii hajautetusti ja versioiden yhdistäminen on tehokkaampaa kuin CVS:ssä. Rational ClearCase on toinen suosittu
kaupallinen järjestelmä, joka tarjoaa ominaisuuksia versiohallinnan lisäksi myös
muuhun ohjelmistotuotteen hallintaan.
BitKeeperin kehityksen aloitti Larry McVoy ja sen omistaa BitMover-yhtiö. CVS:ään
verrattuna BitKeeper tarjoaa ominaisuuksia, jotka helpottavat versiohallintaa suurissa,
maantieteellisesti hajautetuissa projekteissa. BitKeeper on ollut käytössä
esimerkiksi Linuxin ytimen kehityksessä.
BitKeeper toimii hajautetusti siinä mielessä, että jokaisella kehittäjällä on omalla
koneellaan täydellinen kopio projektin varastosta. Tätä kopiota kutsutaan lapseksi
ja päävarastoa vanhemmaksi. Kun kopio on kerran tehty, kehittäjän koneen ja
päävaraston välillä siirretään vain tietoa tehdyistä muutoksista. Lapsivarastot
voivat vaihtaa muutostietoa myös keskenään. Tämä helpottaa työskentelyä kun verkkoyhteyttä ei ole käytettävissä, tai käytössä on hidas yhteys. Myöskään päävarastopalvelimen käyttökatkokset eivät haittaa työskentelyä siinä määrin kuin täysin
keskitetyssä järjestelmässä.
BitKeeper voi käyttää eri protokollia, kuten SSH:ta, RSH:ta, BKD:ta, HTTP:ta ja
SMTP:tä päivitysten tekemiseen.
Myös versioiden välisten muutosten käsittelyä on BitKeeperissä tehostettu. Kehittäjät
voivat koota samaan asiaan liittyvät muutokset niin sanotuksi muutosjoukoksi
(engl. changeset). Muutosjoukko tallennetaan tiedostoon, jossa kerrotaan, mitä on
muutettu ja mitä ei. Tämän avulla voidaan erottaa esimerkiksi yksittäisen virheen
korjaamiseksi tehdyt muutokset.
BitKeeper on kaupallinen, mutta aikaisemmin sitä on kuitenkin voinut käyttää
ilman maksullista lisenssiä, mikäli ei ole käyttänyt monen käyttäjän varastoa tai
on suostunut käyttämään OpenLogging-järjestelmää. OpenLogging on järjestelmä,
jossa lähetetään metatietoja projekteista keskitetylle web-palvelimelle, jonka avulla
muut kehittäjät voivat seurata toistensa edistymistä. Palvelu on julkinen, jonka
vuoksi kuka tahansa voi selata projektien tietoja. Järjestelmä ei sisällä lähdekoodia
vaan ainoastaan kehityslokeja sekä kehittäjäkohtaista statistiikkaa.
Pääasiallisesti BitKeeper on kuitenkin suunnattu maksullisen lisenssin omaaville,
joka korostui kun BitMover ilmoitti 5. huhtikuuta 2005 lopettavansa ilmaisen version
tarjoamisen BitKeeperistä.

ClearCase

ClearCase on IBM Rationalin kaupallinen versionhallintajärjestelmä, jonka alkuperäinen kehittäjä Rational Software on nykyisin IBM:n omistuksessa. ClearCase on osa IBM:n tarjoamaa kokonaista tuoteperhettä ohjelmistotuotteen hallinnan eri osa-alueisiin. Varsinaisen versiohallinnan lisäksi ClearCase tarjoaa toimintoja myös työtilan, ohjelmistokoontien ja muutosten hallintaan. Järjestelmä on integroitavissa moniin ohjelmistonkehitysympäristöihin kuten Eclipseen, Visual Studioon, ja WebSphereen.
Kaupallisen järjestelmän sisäisestä toiminnasta on vaikea saada tietoa, mutta ClearCase mahdollistaa ainakin historiallisen ja loogisen versioinnin. Työskentely ClearCasella tapahtuu checkin/checkout -mallin mukaan, joka vastaa CVS:n toimintatapaa.
ClearCase käyttää versioiden tallentamiseen oliotietokantaa, joka mahdollistaa tarkan pääsynvalvonnan. Järjestelmällä voidaan hallita teksti- ja binääritiedostoja, testauskomentojonoja, hakemistoja ja yleisesti ottaen kaikkia tiedostojärjestelmän kohteita.
ClearCase on saatavissa seuraaville käyttöjärjestelmille: AIX, HP-UX, Linux, muut Unix-kaltaiset alustat, Solaris ja Windows. Se integroituu natiivina myös saman tuoteperheen ClearQuest-virheenseurantajärjestelmään.

Endevor

Endevor on CA Technologiesin versiohallintajärjestelmä IBM z/OS suurtietokoneille.

Perforce Helix

Perforce Helix (ennen vain Perforce) on Perforce Softwaren kaupallinen versionhallintajärjestelmä.

PVCS

PVCS Version Manager (ent. Polytron Version Control System) on Serena Softwaren kaupallinen versionhallintajärjestelmä. Versio 8.5 on saatavilla muun muassa AIX, Linux, Solaris ja Windows alustoille.

QVCS

QVCS (Quma Version Control System) on alun perin Amiga-tietokoneelle julkaistu kaupallinen versionhallintajärjestelmä, jonka on julkaissut Quma Software. Alkuperäinen versio on siirretty Windows-alustalle vuonna 1996, se on myöhemmin toteutettu uudelleen Java:lla ja julkaistu avoimena lähdekoodin versiona.

Visual Source Safe

Visual Source Safe on Microsoftin versiohallintajärjestelmä, joka seuraa Microsoftin Visual Studio -kehitysympäristön mukana.
Visual Source Safe (VSS) on erityisesti Windows-alustalle tarkoitettu asiakas-palvelin -tyylinen versiohallintaohjelmisto.
Source Safen etuna on helppo käyttöönotto, jos sovelluskehitystä tehdään Visual Studio -työkaluilla Microsoft-ympäristössä. VSS integroituu vakiona Visual Studioon.
Laajempiin ja hajautetumpiin projekteihin Microsoft suosittelee Visual Studio Team Systemin Visual Studio Team Foundation Server -palvelinta.
Microsoft tukee Visual Source Safen käyttämistä vain Windows-asiakasohjelmien kanssa, mutta kolmansilta osapuolilta on tarjolla myös asiakasohjelmat Javalle, Linuxille, Macintoshille ja Sunin Solaris-käyttöjärjestelmälle.
Source Safe on kerännyt laajalti negatiivista huomiota sen ongelmakohtiin.