Concurrent Version System.
Le but principal de CVS est de maintenir dans un endroit centralisé l'intégralité des sources d'un projet, avec toutes les versions successives de chaque fichier. Ainsi, on peut facilement retracer l'évolution du source. De plus, CVS prévoit que plusieurs programmeurs travaillent simultanément sur les mêmes fichiers, et tente de gérer au mieux les mises à jour simultanées de ces fichiers.
Par exemple : Alice modifie types.h
en rajoutant un type,
Bob modifie ce
même fichier en modifiant un autre type. Lors de la mise à jour, CVS
regarde les différences entre le fichier original et celui édité par
le programmeur et incorpore les modifications. Lorque elles concernent
exactement la même section de code, il y a "conflit" et il faut qu'un
des deux programmeurs s'en occupe manuellement.
Le rôle de CVS n'est pas de gérer la compilation. Les Makefile, autoconf et autres sont là pour ça. De plus, CVS n'est pas spécialement adapté au suivi d'un standard ou d'un protocole, ou d'autres documents textuels. Il ne remplace pas non plus les réunions de travail et autres brainstormings.