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 ) |
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] .
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.
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ă.
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/ .
Sisteme de control al versiunilor ( categorie ) | |
---|---|
Doar local | |
Client server | |
Distribuit | |
URI | scheme|
---|---|
Oficial | |
neoficial |