CVS

CVS
Tip de sistem centralizat de control al versiunilor [d]
Dezvoltator Echipa CVS [d]
Scris in C [4]
Sistem de operare Sistem de operare asemănător Unix
Prima editie 19 noiembrie 1990 [1]
ultima versiune 1.11.23 [2] (8 mai 2008 ) ( 2008-05-08 )
versiune beta
Licență Licență publică generală GNU, versiunea 1.0 sau ulterioară [d] [5]
Site-ul web nongnu.org/cvs/ ​(  engleză)

CVS ( eng.  Concurrent Versions System  - simultaneous versions system ) este un sistem centralizat de control al versiunilor care a fost popular în anii 1990 - începutul anilor 2000. Păstrează un istoric al modificărilor aduse unui anumit set de fișiere, de obicei cod sursă software și facilitează colaborarea unui grup de persoane la același proiect. Distribuit în conformitate cu termenii GNU GPL .

De la sfârșitul anilor 2000, dezvoltarea activă a sistemului a fost întreruptă (cea mai recentă versiune a fost lansată în mai 2008 ), doar corecții minore sunt făcute codului sursă [6] . Sistem considerat învechit [7] [8] [9] .

Concepte de bază

CVS utilizează o arhitectură client-server . De obicei, clientul și serverul sunt conectate printr-o rețea locală sau prin Internet , dar pot rula și pe aceeași mașină dacă doriți să păstrați istoricul versiunilor unui proiect local. Software-ul server rulează de obicei pe Unix (deși există un server CVS pentru Windows NT ), în timp ce clienții CVS sunt disponibili pe toate sistemele de operare populare .

Serverul stochează versiunile curente ale proiectului și istoricul modificărilor într-un depozit special ( repository ), iar clientul se conectează la acesta pentru a obține versiunea de care are nevoie sau pentru a scrie una nouă. După ce a primit versiunea necesară de la server ( check-out ), clientul creează o copie locală a proiectului (sau o parte a acestuia) - așa-numita copie de lucru. După ce s-au făcut modificările necesare fișierelor din copia de lucru, acestea sunt trimise la server ( check-in ).

Mai mulți clienți pot lucra la copii ale unui proiect în același timp. Când trimit rezultatele, serverul încearcă să îmbine modificările lor împreună în depozit. Dacă acest lucru eșuează, cum ar fi atunci când doi clienți au schimbat aceleași linii într-un anumit fișier, serverul nu va accepta modificările de la ultima înregistrare și va raporta conflictul către client, care trebuie corectat manual. Dacă operațiunea de check-in are succes, atunci numerele de versiune ale tuturor fișierelor afectate sunt incrementate automat, iar serverul scrie comentariul, data și numele de utilizator în jurnalul său.

De asemenea, clienții pot compara diferite versiuni de fișiere, pot solicita un istoric complet al modificărilor sau pot obține o imagine istorică a unui proiect după o anumită dată sau un număr de versiune. Multe proiecte open source permit accesul anonim de citire, care a fost introdus pentru prima dată în OpenBSD . Aceasta înseamnă că clienții pot interoga și compara versiunile fișierelor fără o parolă; numai operațiunile de check-in care modifică datele din depozit necesită o parolă.

De asemenea, clienții pot folosi comanda de actualizare pentru a sincroniza copia locală a proiectului cu informațiile de pe server , ceea ce evită re-descărcarea întregului proiect.

CVS poate conține, de asemenea, diferite ramuri ale unui proiect. De exemplu, o versiune stabilă a unui proiect poate fi pe o singură ramură care  conține doar remedieri de erori, în timp ce dezvoltarea activă ar putea fi pe o ramură paralelă care include îmbunătățiri sau modificări semnificative de la lansarea versiunii stabile.

CVS folosește compresia delta pentru a stoca eficient versiuni diferite ale aceluiași fișier.

Concepte de bază

Proiectele în CVS sunt stocate ca module, un modul este un set de fișiere de proiect. Un server CVS poate servi mai multe module; toate modulele sunt stocate în depozit. O copie locală a unui modul obținută cu un client CVS se numește copie de lucru.

operațiune de check-out  - extragerea întregului modul din CVS și crearea unei copii de lucru; check-in  - efectuarea modificărilor locale în depozit. Operația de actualizare  este actualizarea proiectului local de la CVS.

Filială ( filiala engleză  ) - o direcție independentă de modificare a proiectului, care poate conține un număr de versiuni succesive; o ramură se poate dezvolta în paralel cu alte ramuri; ramura principală ( trunchiul principal în engleză sau HEAD ) este întotdeauna acolo.  

Revizia ( reviziunea ) este una dintre versiunile unui singur fișier.

Una dintre versiunile întregului produs este o „lansare” ( release , termenul „versiune” nu este folosit deloc în CVS). O etichetă specială ( etichetă ) este atașată versiunii , o etichetă poate fi, de asemenea, atribuită unui fișier separat, dar acest lucru se face rar, de obicei o colecție de fișiere cu anumite revizuiri (versiuni) este marcată cu o etichetă.

Istoric și stare

CVS este o evoluție a unui sistem de control al versiunilor anterioare numit Sistem de control al reviziilor (RCS), care este încă folosit pentru a lucra cu fișiere individuale, dar nu cu proiecte întregi. Dick Grun a oferit [10] un scurt context istoric despre CVS pe pagina sa:

CVS a fost creat pentru a putea lucra cu doi dintre studenții mei pe compilatorul C ACK (Amsterdam Compiler Kit). Noi trei aveam un program aproape incompatibil (un student avea un loc de muncă permanent, al doilea apărea neregulat, iar la proiect nu puteam lucra decât seara). Proiectul lor a durat din iulie 1984 până în august 1985 . CVS a fost inițial denumit cmt , datorită faptului că ne permitea să comitem versiuni independent (din engleză commit  - fix, commit).

Codul a văzut prima dată lumina zilei la conferința mod.sources din 23 iunie 1986 .

Codul care a devenit în cele din urmă versiunea actuală a CVS a fost început cu Brian Berliner în aprilie 1989, cu adăugiri ulterioare de la Jeff Polk și alții. Brian Berliner a scris [11] un document care subliniază îmbunătățirile pe care CVS le-a dobândit în timpul utilizării sale interne la Prisma, un dezvoltator terță parte al nucleului SunOS , după care Brian l-a lansat publicului sub GPL .

Proiectul este susținut de un grup de voluntari. Este de remarcat faptul că versiunea de CVS pentru Microsoft Windows , separată într-un proiect separat CVSNT , extinde în mod activ capacitățile sistemului, chiar și portarea modificărilor înapoi în Unix sub numele CVSNT.

Relația dintre CVS și proiectul GNU poate fi ambiguă: pe o pagină site-ul GNU distribuie programul ca „pachet GNU” iar pe alta CVS este listat la „un alt proiect GPL”. Pe serverul FTP, programul se află în directorul /non-gnu/ .

Dezavantaje

Note

  1. Conținutul /ccvs/NEWS
  2. ȘTIRI 1.11.23 . Arhivat din original pe 27 decembrie 2021. Preluat la 14 aprilie 2022.
  3. Preț D.R. Sistem de versiuni simultane - Noutăți Caracteristică CVS versiunea 1.12.13 lansată!  (engleză) - 2005.
  4. Proiectul cvs Open Source pe Open Hub: Pagina de limbi - 2006.
  5. https://cvs.savannah.nongnu.org/viewvc/cvs/ccvs/README?view=markup
  6. [https://web.archive.org/web/20181116130105/http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/ChangeLog Arhivat 16 noiembrie 2018 la Wayback Machine [surse] Jurnal de / cvs/ccvs/ChangeLog]
  7. CVS este disponibil, Subversion este în Arhivat 25 martie 2010.  (engleză) Revista Red Hat, august 2005
  8. CVS - sourceforge Arhivat 10 iunie 2010.
  9. CVS - sistem de control al versiunilor . Consultat la 25 iulie 2009. Arhivat din original la 8 iulie 2010.
  10. Versiuni concurente System CVS . Consultat la 12 ianuarie 2005. Arhivat din original pe 7 decembrie 2006.
  11. CiteSeerX - CVS II: Dezvoltarea software paralelă . Consultat la 12 ianuarie 2005. Arhivat din original pe 5 iunie 2007.
  12. Evaluarea CVS în cartea Mercurial Arhivată 7 septembrie 2013 la Wayback Machine .

Link -uri