CVS este un sistem de control a versiunilor. El este utilizat pentru a pastra istoricul fisierelor surselor. CVS ne permite sa tinem o evidenta exacta a tuturor versiunilor si sa revenim in orice moment asupra acestora, sa determinam modificarile dintre oricare doua vesiuni.
De exemplu, bug-urile de cele mai multe ori apar atunci cand se realizeaza modificari ale surselor, si este destul de dificil sa determinam momenul in care acestea au fost facute.
CVS este un sistem care permite unui grup de persoane sa lucreze simultan cu o multime de fisiere (de exemplu, fisierele sursa ale unu program).
Principul de functionare al acestuia este urmatorul (vezi figura de mai jos): se pastreaza un repository global ce contine o copie completa a tuturor fisierelor si directoarelor care se afla sub controlul CVS-ului. In orice moment putem sa realizam o copie locala a fisierelor proiectului (operatia de checkout) din repository-ul global. Daca mai taziu au fost puse noi versiuni ale fisierelor in repository-ul global, putem sa realizam actualizarea fisierelor din copia locala (operatia update).
Asupra fisierelor din copia locala puteam sa realizam modificari. Daca intre timp in repository-ul global au fost puse noi fisiere si executam o operatie de update se va realiza o sincronizare intre copia locala si cea globala astfel:
Daca dorim ca modificarile realizate de noi asupra copiei locale sa le punem in repository-ul global trebuie sa realizam operatia de commit. Acest lucru este posibil daca fisierele modificate de noi nu au fost modificate intre timp de alte persoane (adica nu avem conflicte).
In final cand am terminat cu lucrul asupra fisierelor din copia locala putem sa realizam sa stergem copia locala.
Repository | Directorul in care sunt pastrate copiile master ale fisierlor.Repository-ul principal sau master este o structura de directoare. |
Module | Un director din repository-ul global. Acestea sunt definite in fiserul de module al CVS-ului. |
Check out | Operatia prin care se realizeaza o copie locala a fisierelor din repository-ul global pentru a fi examinate sau editate. |
Revision | O eticheta numerica care identifica versiunea unui fisier. |
Pentru a putea utiliza CVS-ul trebuie sa setam variabila de mediu CVSROOT cu calea catre repository-ul global. Acesta poate fi un director de pe masina locala sau se poate afla pe un server la distanta.
>set CVSROOT=:local:d:\repositorysau
>set CVSROOT=:pserver:student@idinf.ucv.ro:/home/cvs/repositoryLa inceput, pentru a crea repository-ul este necesara initalizarea acestuia astfel:
>cvs initIn urma rularii acestei comenzi se va crea un repository nou gol.
cvs import
. Sintaxa generala a acestei comenzi este urmatoarea:
>cvs import <module name> <vendor tag> <symbolic tagname>
Un tag este o combinatie de de litere, cifre, spatii mai putin virgula si punct.
Sa presupunem ca structura de directoare in care se afla proiectul nostru este urmatoarea:
d:\projects --- biblioteca +-- lib +-- src +- Book.java + +- Item.java + +-- build.xmlAtunci comezile necesare pentru a adauga modulul in repository sunt urmatoarele:
> cd d:\projects\biblioteca > cvs import -m "Importul initial al proiectului Biblioteca" biblioteca Biblio start
cvs checkout
.
Sintaxa generala a acestei comenzi este urmatoarea:
>cvs checkout <module name>
De exemplu, daca dorim sa extragem din CVS modulul adaugat anterior vom executa urmatoarele comenzi:
>cd d:\work
>cvs checkout biblioteca
In urma executarii acestei comenzi in directorul d:\work
se va creea directorul
biblioteca care va contine o copie a proiectului adaugat anterion in repository.
Inainte de a realiza modificari asupra surselor programului este bine sa realizam o actualizare
a surselor din copia locala cu ultimele versiuni din repository. Acest lucru este necesar
pentru ca este posibil ca din momentul in care am realizat copia locala (checkout) si
momentul in care dorim sa facem modificari acestea sa fi fost deja modificate de alte persoane.
Comanda utilizata in acest sens este csv update
>cd d:\work\bilioteca
>cvs update -d
sau
>cvs update -P numefisier
Optiunea -d
spune CVS-ului sa downloadeze si noile directoare aparute in cadrul proiectului.
cvs status
.
Sintaxa acesteia este urmatoarea:
>cvs status [filename]
Un fisier se poate afla in una din urmatorele:
Pentru ca sursele modificate in copia locala sa fie puse in repository-ul global este necesara efectoarea operatiei de commit. Sintaxa acesteia este urmatoarea:
>cvs commit -m "comentariu" numefis
Aceasta operatie se poate realiza numai in cazul in care fisierul din repository-ul global nu a mai
fost modificat intre timp.
Dupa adaugarea (importarea) proiectului in CVS este evident ca pe parcursul dezvoltarii vor aparea fisiere noi iar altele vor disparea.
Pentru adaugarea de fisiere in repository se utilizeaza comandacvs add
. Sintaxa acesteia
este urmatoarea:
>cvs add numefis
Pentru sergerea de fisiere din repository se utilizeaza comanda cvs remove
. Sintaxa acesteia
este urmatoarea:
>cvs remove numefis
Ambele comenzi trebuie urmate de o operatie de commit pentru ca modificarile sa se reflecte in repozitory-ul global.
>cvs release [-d] directory