**Versionhallintajärjestelmiä** (engl. *Version Control System*, VCS) versiohallintaan on useita, sekä avoimen lähdekoodin että kaupallisia, suljettuja toteutuksia.
Versionhallintajärjestelmät voivat keskittyä lähdekoodin versiohallintaan (engl. *Source Control Management*, SCM) tai ne voivat kattaa laajemmin ohjelmiston konfiguraatiohallinnan (engl. *Software configuration management, SCM*).

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 (engl. *Versioning file system*). 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:

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.

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

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

BitKeeper
---------

*Pääartikkeli: 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
---

*Pääartikkeli: 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
-----

*Pääartikkeli: 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
---

*Pääartikkeli: 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
----------

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

Mercurial
---------

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

Monotone
--------

*Pääartikkeli: Monotone*
Monotone on avoimen lähdekoodin hajautettu versionhallintajärjestelmä, joka asettaa suuremman painoarvon tiedon yhtenäisyydelle (engl. *integrity*) 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
---

*Pääartikkeli: 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
----

*Pääartikkeli: Source Code Control System*
*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)
----------------

*Pääartikkeli: Subversion*
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
-------

1. ↑  Chapter 1. How did we get here? *hgbook.red-bean.com*. Viitattu 3.11.2019. (englanniksi)
2. 1 2 3 4 5 6 7 8 9  Eric Sink: A History of Version Control *ericsink.com*. Viitattu 23.2.2017. (englanniksi)
3. 1 2  Nathan Willis: BitKeeper goes open source  11.5.2016. Lwn.net. Viitattu 6.11.2019. (englanniksi)
4. 1 2  Zack Brown: A Git Origin Story  27.7.2018. Linux Journal. Viitattu 6.11.2019. (englanniksi)
5. ↑
6. ↑
7. ↑
8. 1 2  1.1 What is CVS? *gnu.org*. Viitattu 3.11.2019. (englanniksi)
9. ↑  Moertel, Tom: How I stopped missing Darcs and started loving Git *blog.moertel.com*. Viitattu 23.2.2017.
10. ↑
11. 1 2  Jake Edge: Version control with Fossil  16.3.2011. Lwn.net. Viitattu 3.11.2019. (englanniksi)
12. ↑  Torvalds, Linus: Linus on the BK withdrawal LWN. Viitattu 23.2.2017. (englanniksi)
13. ↑  Version Control Systems Popularity in 2016 *rhodecode.com*. Viitattu 2.11.2019. (englanniksi)
14. 1 2  Microsoft hosts the Windows source in a monstrous 300GB Git repository Ars Technica. Viitattu 21.2.2017.
15. 1 2  Tai, Andy: Re: [Gnu-arch-users revc] *lists.gnu.org*. Viitattu 23.2.2017.
16. ↑  Linus Torvalds: Re: [Gnu-arch-users Re: [GNU-arch-dev] [ANNOUNCEMENT] /Arch/ embraces `git'] *gelato.unsw.edu.au*.  23.4.2005.  Arkistoitu 31.12.2005. Viitattu 6.11.2019. (englanniksi)
17. ↑  Arch naming conventions from a Layman's standpoint *gnuarch.org*.  Arkistoitu. Viitattu 6.11.2019. (englanniksi)
18. ↑  Some Issues with GNU arch *enyo.de*. Viitattu 6.11.2019. (englanniksi)
19. ↑  ArX *nongnu.org*. Viitattu 8.11.2019. (englanniksi)
20. ↑  Bazaar is now a GNU project *lists.ubuntu.com*. Viitattu 23.2.2017.
21. ↑  Goode, Durham & Agarwal, Siddharth P.: Scaling Mercurial at Facebook Facebook. Viitattu 21.2.2017.
22. ↑  6 Version Control Systems Reviewed *smashingmagazine.com*. Viitattu 23.2.2017.
23. 1 2  The Monotone version control system *lwn.net*. Viitattu 6.11.2019. (englanniksi)
24. ↑  Monotone – distributed version control system *linuxlinks.com*. Viitattu 8.11.2019. (englanniksi)
25. ↑
26. ↑  Plastic SCM: A Full Version Control Stack built with Mono *mono-project.com*.  13.2.2019. Viitattu 6.11.2019. (englanniksi)
27. ↑  Announcing the Release of Serena PVCS Version Manager 8.5 Serena Software. Viitattu 23.2.2017.
28. ↑  Quma Version Control System *qumasoft.com*.  Arkistoitu 27.6.2013. Viitattu 23.2.2017.
29. ↑  QVCS-Enterprise open source project *github.com*. Viitattu 23.2.2017.
30. ↑  Amiga World Magazine (December 1992) *archive.org*. Viitattu 23.2.2017.
31. ↑  Tichy, W. F.: Rcs – a system for version control. Software-Practice & Experience, 15(7), 1985, 637–654.
32. ↑  GNU RCS *gnu.org*. Viitattu 3.11.2019. (englanniksi)
33. ↑  Rochkind, M.J.: The Source Code Control System, IEEE Transactions on Software Engineering, Volume 1(4), 1975, 364–370.
34. ↑  SCCS vs RCS *sccs.sourceforge.net*. Viitattu 21.2.2017.
35. ↑  GNU CSSC *gnu.org*. Viitattu 21.2.2017.
36. ↑  Welcome to the SCCS project *sccs.sourceforge.net*. Viitattu 21.2.2017.
37. ↑
38. ↑
39. ↑
40. 1 2  Veracity, a New DVCS Based on a Distributed Database *infoq.com*.  19.7.2011. Viitattu 3.11.2019. (englanniksi)
41. ↑  Vesta Configuration Management System *sourceforge.net*. Viitattu 8.11.2019. (englanniksi)
42. ↑  Welcome to the home page of the Vesta Configuration Management System! *vestasys.org*. Viitattu 8.11.2019. (englanniksi)
43. ↑  Software announcements by license *lwn.net*.  23.7.2003. Viitattu 8.11.2019. (englanniksi)
44. ↑  Source Safe Problems *abstrakti.com*. Viitattu 21.2.2017.
45. ↑  De Smet, Alan: Visual SourceSafe: Microsoft's Source Destruction System *highprogrammer.com*. Viitattu 21.2.2017.
46. ↑  Source Control: Anything But SourceSafe *blog.codinghorror.com*. Viitattu 21.2.2017.
47. ↑  Visual SourceSafe Version Control: Unsafe at any Speed? *developsense.com*.  Arkistoitu 27.5.2011. Viitattu 21.2.2017.

Aiheesta muualla
----------------

* Version Control by Example kirja verkossa (englanniksi)
* Subversion (Arkistoitu – Internet Archive)
* Concurrent Versions System
* Git
* Mercurial
* Bazaar (Arkistoitu – Internet Archive)
* Monotone (Arkistoitu – Internet Archive)
* 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