CVS

**Concurrent Versions System** (**CVS**), baita **Concurrent Versioning System** bezala ere ezaguna, bertsioak kontrolatzen dituen sistema baten aplikazio informatiko bat da. Lan guztiaren erregistroak mantentzen ditu, baita proiektu bat osatzen duten fitxategien aldaketak ere, horrela oso urrun dauden garatzaileek parte har dezaten ahalbidetuz. CVS oso ezaguna egin da software librearen munduan. Bere garatzaileek sistema GPL lizentziapean zabaltzen dute.

## Ezaugarriak 
Bezero-zerbitzari arkitektura erabiltzen du: zerbitzari batek proiektuaren momentuko bertsioa gordetzen du eta baita historiala ere. Bezeroak zerbitzarira konektatzen dira proiektuaren kopia oso bat lortzeko. Hau egiten da, aldi batean kopia honekin lan egin ahal dezaten eta geroago aldaketak GNU komando bidez sartu.

Gehienetan bezeroa eta zerbitzaria Internet bidez konektatzen dira, baina CVS-rekin bezeroa nahiz zerbitzaria makina berean egon daitezke. CVS sistemak garatzaile lokalekin soilik du proiektuaren programaren bertsioen historiala erregistroetan mantentzeko lana. Hasera batean zerbitzariak Unix moduko sistema eragile bat erabiltzen zuen, nahiz eta gaur egun CVS-ren bertsio gehiago egon; Windows-erako ere badu. CVS bezeroek, gehien hedatutako sistema eragileetan funtziona dezakete.

Hainbat bezerok aldi berean proiektuaren kopiak atera ditzakete. Ondoren, aldaketak egiten dituztenean, zerbitzariak bertsio diferenteak akoplatzen saiatzen da. Honek huts egiten badu, bi bezerok artxibo bateko lerro bera aldatu nahi badute adibidez, zerbitzariak bigarren aktualizazioa ukatzen du eta bezeroari gatazka horren berri ematen dio, zeina bezeroak ebatzi beharko duen. Aktualizazioa ondo joan bada, azken bertsioaren fitxategien zenbakiak automatikoki gehitzen dira eta CVS-k aktualizazioari buruzko informazioa metatzen du. Informazioa hori bezeroak emandako deskribapen batek, datak, egilearen izenak eta log artxiboek osatzen dute. Bezeroek bertsio desberdinak konpara ditzakete, aldaketa guztien historiala eskatu edo “argazki” historiko bat egin data edo errebisio zenbaki konkretu batean zegoen bertsioari. Kode irekiko proiektu askok, irakurketa anonimoa baimentzen dute, bezeroek inongo pasahitzik eman gabe bertsioak lortu eta konparatzeko ahalmena izanez; aldaketak sartzeak soilik eskatzen du pasahitzaren beharra.

Bezeroek ere erabil dezakete aktualizatzeko agindua zerbitzarian dagoen azken bertsioa izateko. Honek proiektu osoa deskargatzeko beharra kentzen du.

CVS-k proiektuaren adar ezberdinak manten ditzake. Adibidez: proiektu baten bertsio batek bide bat osa dezake eta erroreak konpontzeko erabili. Hau egin daiteke baldin eta momentuan garatzen dagoen eta aldaketa nagusiak dituen bertsioa beste linea batean badago beste adar bat osatzen.

## Historia eta egoera 
CVS, GNU-k garatu zuen. GNU-k programak banatzen ditu, aplikazioa basikoekin eta “GNU paketeak” deituz. Beste proiektuetan GPL lizentzia ematen da.
Gaur egun CVS bertsio asko daude sistema eragile desberdinentzat.

## CVS protokoloaren mugak 
CVS plataformako artxiboak, ezin dira berrizendatu, hauek ezabatu egin behar dira eta berriro gehitu izen berriarekin. CVS protokoloak ez du biderik direktorioak ezabatu eta berrizendatzeko, artxibo bakoitza bere azpidirektorioan ezabatu eta berriro gehitu behar da izen berriarekin.

## CVS erabiltzeko komando batzuk 
Modulu berriak gehitu: “cvs import”
Modulu berriak gehitu nahi badira, lehenik moduluak dauden direktoriora mugitu behar dugu eta ondoren agindu hau exekutatu:

cd fitxategiak-dauden-direktorioa
cvs import moduluaren-izena saltzailearen-etiketa bertsioaren-etiketa

Modulu bat deskargatu lehen aldiz: “cvs checkout”

Honek direktorioen hierarkia bat osatuko du eta bertan gordeko da lanerako moduluaren kopia lokala. Hau modulu bakoitzeko behin bakarrik egin behar da. Behin eginda, CVS-k jakingo du modulu bakoitza identifikatzen hurrengoan eguneraketak egiteko. Hau da exekutatu beharreko agindua:
 
 
cd modulua-aurkituko-den-direktorioaren-aita
cvs checkout moduluaren-izena

	Kopiak eguneratu: “cvs update”
	Kopia lokala eguneratu nahi dugunean beste erabiltzaile batzuk egindako aldaketekin agindu hau exekutatu behar dugu:

cd moduloaren-direktorioa
cvs update -Pd

	Gure aldaketak gehitu: “cvs commit”
	Agindu hau exekutatu behar da gure aldaketak zerbitzarian gorde daitezen:

cd moduluaren-direktorioa
cvs commit

Hau exekutatu ondoren, testu editore bat azalduko zaigu, eta bertan guk egindako aldaketen berri idatzi beharko dugu lerro bat edo bitan.

Hemen aipatutako komandoez aparte beste hainbat ere badaude:

cvs add: moduluei fitxategiak gehitzeko
cvs remove: modulu batetik fitxategi bat kentzeko
cvs diff: gure kopia lokalaren eta zerbitzariko kopiaren arteko konparaketa bat egiten du.

## Kanpo estekak