Luettelo versionhallintajärjestelmistä

**Versionhallintajärjestelmiä** (, VCS) versionhallintaan on useita, sekä avoimen lähdekoodin että kaupallisia, suljettuja toteutuksia.
Versionhallintajärjestelmät voivat keskittyä lähdekoodin versiohallintaan (, SCM) tai ne voivat kattaa laajemmin ohjelmiston konfiguraatiohallinnan ().

Versiohallintaa kutsutaan useilla nimityksillä, joissa on päällekkäisyyksiä.

Myös eräiden käyttöjärjestelmien tiedostojärjestelmä tukee läpinäkyvästi tiedostojen versiointia (). Tässä ei ole niitä käsitelty.

Osa järjestelmistä on aloittanut suljettuna kaupallisena toteutuksena ja myöhemmin lähdekoodit on julkaistu.

Nykyinen suuntaus on kehittää hajautettuja versionhallintajärjestelmiä, joita edustavat Git, Mercurial ja Bazaar.

## Järjestelmien luokittelu

Versionhallintajärjestelmät voidaan jakaa kolmeen sukupolveen seuraavasti:
# yksittäiset tiedostot, ei verkottamista: RCS, SCCS
# useampia tiedostoja, keskitetyt palvelimet: CVS, Subversion
# 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.

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

Kolmas sukupolvi tukee *muutosjoukkoja* (), 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 () ja muutosten tallettamien () ovat erillisiä toimintavaiheita. Rinnakkaisuusmalli sallii tallettaa muutokset ensin ja päättää jälkikäteen yhdistämisestä.

## BitKeeper

BitKeeper on BitMoverin kehittämä hajautettu versiohallintajärjestelmä, jonka kehityksen aloitti Larry McVoy. BitKeeper käyttää hajautettua mallia, joka inspiroi projekteja kuten GNU Arch, Darcs ja Monotone.

BitKeeper oli alkuun kaupallinen, mutta on julkaistu vuonna 2016 avoimen lähdekoodin Apache-lisenssillä.

## ClearCase
*ClearCase* on IBM Rationalin kaupallinen versionhallintajärjestelmä, jonka alkuperäinen kehittäjä Rational Software on nykyisin IBM:n omistuksessa. 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.

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.

## Codeville
Codeville oli Pythonilla toteutettu hajautettu versionhallintajärjestelmä.

## CVS

CVS perustuu Dick Grunen 1986 julkaisemista shell-skripteistä.
Myöhemmissä versioissa ei ole samaa koodia enää mutta algoritmit perustuvat samaan.

CVS on niin sanottu toisen sukupolven versionhallintajärjestelmä.

## Darcs

*Darcs* on avoimen lähdekoodin hajautettu versionhallintajärjestelmä, joka on tehty Haskell-kielellä.

## Endevor

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

## Fossil
Fossil on hajautettu versionhallintajärjestelmä, jossa on sisäänrakennettu bugiseurantaohjelma ja wiki. Fossil käyttää SQLite-tietokantamoottoria.

## Git

Kun BitMover lakkautti kaupallisen BitKeeper-järjestelmänsä ilmaisversion keväällä 2005, Linus Torvalds aloitti Gitin kehityksen. Subversionia Torvalds ei kokenut sopivaksi Linux-ytimen kehitystarkoituksiin.

RhodeCoden mukaan Git oli vuonna 2016 usealla eri mittaustavalla selkeästi suosituin versionhallintajärjestelmä.

Ars Technican mukaan Microsoft käyttää nykyisin Gitiä Windowsin lähdekoodien hallintaan.

## GNU arch

*GNU arch* on avoimen lähdekoodin hajautettu versionhallintajärjestelmä, jonka kehitys on päättynyt.
GNU archin väitetään vaikuttaneen useiden muiden versionhallintajärjestelmien kehitykseen kuten Git, Mercurial ja GNU Bazaar.

GNU archia on kritisoitu muun muassa hakemistorakenteen käyttötavasta sekä tiedostonimien erikoisuuksista.

ArX on archista haarautunut versionhallintajärjestelmä, joka on toteutettu uudelleen C++-kielellä.

## GNU Bazaar

*GNU Bazaar* on hajautettu versionhallintajärjestelmä kuten Git ja Mercurial. Bazaar on avoimen lähdekoodin projekti, jota sponsoroi Canonical.

## Mercurial

*Mercurial* on avoimen lähdekoodin hajautettu versionhallintajärjestelmä kuten Git ja Bazaar, jota mm. Facebook käyttää.

## Monotone

Monotone on avoimen lähdekoodin hajautettu versionhallintajärjestelmä, joka asettaa suuremman painoarvon tiedon yhtenäisyydelle () ja luotettavuudelle kuin suorituskyvylle.

Monotone tukee atomisia tallennuksia, säilyttää historiaan uudelleen nimeämisessä ja käyttää SHA-1 tiivistefunktiota. Monotone säilöö lähdekoodit SQLite-tietokantamoottorilla.
Monotone tukee digitaalista allekirjoitusta RSA:lla.

## Perforce Helix

Perforce Helix (ennen vain Perforce) on Perforce Softwaren kaupallinen versionhallintajärjestelmä. Perforce tarjoaa viiden käyttäjän lisenssiä ilmaiseksi indie-pelien kehittäjille.

## Plastic SCM
Plastic SCM on Códice Softwaren kaupallinen versionhallintajärjestelmä, joka on julkaistu vuonna 2006.

## 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 Javalla ja julkaistu avoimena lähdekoodin versiona.

## RCS

RCS on yhden käyttäjän vapaa versiohallintajärjestelmä. RCS:n kehityksen aloitti Walter Tichy 1980-luvun alkupuolella Purduen yliopistossa.
RCS on kehitetty Source Code Control Systemin (SCCS) pohjalta.

RCS on niin sanottu ensimmäisen sukupolven versionhallintajärjestelmä.

## SCCS

*Source Code Control System* (SCCS) on yksi varhaisista versiohallintajärjestelmistä. Se on kehitetty vuonna 1972 Bell Labsissa IBM System/370 -tietokoneelle.

SCCS:lle on tehty avoimen lähdekoodin korvike GNU CSSC sekä POSIX-yhteensopiva versio.
SCCS on niin sanottu ensimmäisen sukupolven versionhallintajärjestelmä.

## StarTeam
StarTeam on Starbasen (myöhemmin Borlandin ja Micro Focusin) kehittämä versionhallintajärjestelmä.

## Subversion (SVN)

Subversion on versiohallintajärjestelmä, joka on kehitetty korjaamaan CVS:n ongelmia.

Vuonna 2011 Subversion oli suosituimpia versionhallintajärjestelmiä. Subversion on niin sanottu toisen sukupolven versionhallintajärjestelmä.

## Vault
Vault on SourceGearin keskitetty kaupallinen versionhallinta- ja bugiseurantaohjelma, joka käyttää Microsoftin SQL Serveriä ja IIS Web Service -palvelua.

## Veracity
Veracity on SourceGearin hajautettu versionhallintajärjestelmä. Veracityn lähdekoodit on julkaistu Apache-lisenssillä.

## Vesta
Vesta on Compaqin (ennen Digitalin) kehittämä ohjelmiston konfiguraation ja lähdekoodin versionhallintajärjestelmä. Vesta on julkaistu GNU LGPL -lisenssillä.

## 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.

## Lähteet

## Aiheesta muualla
* Version Control by Example kirja verkossa 
* Subversion 
* Concurrent Versions System
* Git
* Mercurial
* Bazaar 
* Monotone 
* Darcs
* BitMover BitKeeper
* Plastic SCM
* IBM Rational ClearCase
* Microsoft Visual Source Safe
* IBM Rational Synergy (ex Telelogic Synergy)
* Dimensions CM
* GNU arch
* Revision Control System
* Perforce