Concurrent Versions System
Concurrent Versions System (CVS) is een versiebeheersysteem dat is ontwikkeld om versiebeheer te ondersteunen op hiërarchisch geordende verzamelingen (bron) bestanden. Het is een voorbeeld van gecentraliseerde versiecontrole. Op een enkele plaats, de repository, worden alle versies van alle bestanden bijgehouden, terwijl gebruikers op een lokale kopie daarvan werken. Gebruikers moeten hun kopie synchroon houden met expliciete opdrachten om wijzigingen door te voeren en om bestanden aan de versiecontrole toe te voegen of eruit te verwijderen.

De repository kan op het lokale bestandssysteem staan, maar CVS ondersteunt ook verscheidene client-server-protocollen die het toestaan dat de repository elders op een server wordt opgeslagen. Hierdoor is het door meerdere gebruikers tegelijk te gebruiken. Dit maakt CVS een goed instrument voor het samenwerken aan bestanden door een aantal mensen tegelijk vanaf verschillende locaties.

CVS werd in 1986 geschreven door Dick Grune van de Universiteit van Amsterdam als een verzameling shellscripts die RCS aanriepen. RCS kan alleen versiebeheer doen op losse bestanden, dus dit was een grote stap vooruit. In 1989 maakte Brian Berliner een implementatie in C, die sindsdien verder is doorontwikkeld; het is opensourcesoftware, verspreid onder de GNU General Public License (GPL).

In de jaren 1990 ontwikkelde CVS zich tot de de facto standaard voor versiecontrole bij opensourcesoftware; voorbeelden van projecten die het gebruikten zijn GNOME, KDE, GIMP en Wine. In de jaren 2000 vond een verschuiving plaats naar Subversion en naar decentrale versiecontrolesoftware zoals Git.

Beperkingen 
CVS werkt nog steeds door losse operaties op afzonderlijke bestanden (namelijk die van RCS) op reeksen bestanden achter elkaar uit te voeren. Hierdoor heeft het een paar grote beperkingen:
 geen atomic commit: het doorvoeren van wijzigingen kan halverwege een reeks falen, met een inconsistente repository als resultaat;
 geen herkenning van of ondersteuning voor het hernoemen, splitsen of samenvoegen van bestanden;
 geen globale versienummering (elk bestand heeft zijn eigen oplopende versienummer);
 geen goede ondersteuning voor binaire bestanden (CVS kan geen verschillen tussen de versies van zulke bestanden bepalen).

Het versiebeheersysteem Subversion is een volledige herimplementatie van de principes van CVS waar deze beperkingen grotendeels uit verwijderd zijn.

Externe links 
 Projectpagina
 Interview met Dick Grune, de bedenker van het concurrent versions system.

Versiebeheersysteem
Software geschreven in C
Opensourcesoftware en vrije software