**CVS** (de la angla **Concurrent Versions System** - Sistemo por Samtempaj Versioj) estas versitena sistemo: ĝi helpas kontroli ĉiujn ŝanĝojn al (softvara) projekto kaj ebliĝas ke multaj malproksimaj verkistoj povas kunlabori. Ĝi estas populara en la libera programara mondo kaj estas ĝi mem disdonata sub la *kopimalrajto* permesilo aŭ Publika Permesilo de GNUo.

Kapabloj
--------

CVS estas klienta-servila sistemo: la servilo tenas la aktualan version de la projekto kaj ĝian historion, kaj la klientoj konektas al la servilo por preni kompletan kopion de la projekto, labori pri ĉi tiu kopio kaj poste remeti iliajn ŝanĝojn al la servilo. Kutime, la kliento kaj la servilo konektas ĉe la interreto, sed oni ankaŭ povas uzi klienton kaj servilon ĉe sama komputilo, por kontroli versian historion pri projekto kiu havas nur lokajn verkistojn. La servilo kutime funkcias sur la Uniksa operaciumo. Klientprogramoj estas haveblaj por ĉiuj vaste uzataj operaciumoj.

Pluraj klientoj povas preni kopiojn de la projekto samtempe. Kiam ili poste remetas iliajn ŝanĝojn, la servilo provas kunfandi ilin. Se ĉi tiu malsukcesas, ekzemple ĉar du klientoj provis ŝanĝi la saman linion en dosiero, tiuokaze la servilo malpermesas la duan remetiĝon kaj informas la klienton pri la konflikto, kiun oni bezonas ĝustigi permane. Se la remetiĝo
sukcesas, tiam ĉiuj el la versinumeroj de la ŝanĝitaj dosieroj estas aŭtomate alkrementitaj, kaj priskribo de la uzanto, la dato kaj la nomo de la verkisto estas konservata en la protokoldosieroj.

Klientoj povas ankaŭ kompari malsamajn versiojn de dosieroj, demandi kompletan historion de ŝanĝoj, aŭ preni historian version de la projekto je dato aŭ per versinumero. Multaj malfermaj fontaj projektoj permesas "anoniman nurlegan atingon", kio signifas ke klientoj povas preni kaj kompari versiojn sen pasvorto; nur remeti ŝanĝojn postulas pasvorton.

La kliento ankaŭ povas uzi la "update" (ĝisdatigu) ordonon por aktualigi lian lokan kopion kun la plej nova versio ĉe la servilo. Tiu forstrekas la bezonon por refoje elŝuti la tutan projekton.

Ankaŭ estas eble havi malsamajn "branĉojn" de projekto en CVS. Ekzemple, oni havas eldonitan version de la softvara projekto en branĉo kiun oni nur uzas por ĝustigi cimojn, dum la aktuala versio pri kiu oni laboras pri ŝanĝoj kaj novaj kapabloj estas konservata en aparta branĉo.

Terminaro
---------

Sola projekto (aro de rilataj dosieroj) kontrolata per CVS estas nomata *modulo* (angle: *module*). CVS-a servilo povas kontroli plurajn modulojn, kaj la loko kie ĝi tenas ilin estas nomata *deponejo* (angle: *repository*). La kopio de modulo kiun kliento elŝutis estas *laborkopio*.

Historio kaj Stato
------------------

CVS estas bazita sur pli malnova versitena sistemo nomata RCS kiu kontrolas dosierojn sed ne tutajn projektojn kaj estas ankoraŭ uzata. La projekto-bazata ideo kaj la algoritmo por konfliktresolvado de CVS estis unue pensita de Dick GRUNE en Decembro 1986. La kodo kiu evoluis en la nunan version de CVS estis eklaborata de Brian BERLINER je Aprilo 1989, kaj poste helpita de Jeff POLK kaj multaj aliaj kontribuantoj. Nuntempe, la CVS kodo estas subtenata de volontularo.

La stato de CVS kiel parto de la GNUa projekto estas iom ambigua: la GNUa TTT-ejo disdonas la programon; unu paĝo nomigas ĝin "GNUa pakaĵo" kaj alia nomigas ĝin kiel "alia projekto kun GPL permesilo". Ĉe la FTP-ejo, la programo situas en la `/non-gnu/` (ne-GNUa) dosierujo. Ne ĉiuj el la dosieroj en la CVS disdonaĵo havas kopirajtojn transkribitajn al la
FSF.

Dokumentaĵo kaj eksteraj ligiloj
--------------------------------

* Per CEDERQVIST k.a. : *CVS Concurrent Versions System*,  Arkivigite je 2002-10-17 per la retarkivo Wayback Machine
* Karl FOGEL: *Open Source Development with CVS*,
* CVS TTT-ejoj: ,

Vidu ankaŭ
----------

* Subversion (*SVN*)
* Git
* GNU Arch
* BitKeeper