Preskočiť na obsah

Concurrent Versions System

z Wikipédie, slobodnej encyklopédie
Concurrent Versions System
Základné informácie
AutorDick Grune[1]
Vývojártím CVS (projekt na GNU Savannah)[2]
Uvedenie1986 (skripty), 19. november 1990 (verzia 1.0)[3]
Posledná stabilná verzia1.11.23[4] (8. máj 2008)
Posledná testovacia verzia1.12.13 (vývojová rada)[5] (28. september 2005)
Vyvinutý vC[6]
Operačný systémunixové systémy, Windows[7]
Typ softvérusystém na správu verzií
LicenciaGNU GPL verzia 2 alebo novšia[2]
Ďalšie odkazy
Webová stránkanongnu.org/cvs

Pozri aj Informačný portál

Concurrent Versions System alebo CVS je systém na správu a udržovanie histórie súborov, zároveň umožňuje prístup k týmto súborom a manipuláciu s nimi cez sieť.[7] Jeho prvú podobu – sadu shellových skriptov – vytvoril v polovici 80. rokov 20. storočia Dick Grune z Vrije Universiteit v Amsterdame a v roku 1986 ju zverejnil.[1][8] CVS je nadstavbou (front end) staršieho systému Revision Control System (RCS), ktorý spravuje jednotlivé súbory, a rozširuje ho o správu celých stromov adresárov a o prácu cez sieť v modeli klient-server.[9][7]

Systém CVS spravuje jednu, alebo niekoľko skupín súborov nazývaných repozitár (angl. repository).[10][11] Každý repozitár má vlastné riadenie prístupu a je delený na menšie časti nazývané moduly, ktoré môžu reprezentovať projekty alebo skupiny projektov v stromovej štruktúre.[12][13] Celý repozitár je uložený vo forme súborov na súborovom systéme servera.[14] Zmeny sú sledované a uchovávané na úrovni verzií (revízií) jednotlivých súborov v stromovej štruktúre projektu.[15] Skupinu súborov môžeme označiť jednou nálepkou (angl. tag) a vytvárať tak rôzne vydania celého projektu (angl. release).[16] V ktoromkoľvek okamihu je možné vytvoriť novú vývojovú vetvu (angl. branch) a tu potom rozvíjať samostatne, alebo ju neskôr opäť zlúčiť.[17] Takisto je možné sa kedykoľvek vrátiť k ľubovoľnej predchádzajúcej verzii ľubovoľného súboru.[8]

Programátori získavajú kópie modulov operáciou „check out“.[6] Check-outované súbory slúžia ako pracovná kópia nazývaná „sandbox“ alebo „workspace“.[18][19] Zmeny v pracovnej kópii sa do repozitára premietnu vykonaním operácie commit - commitovaním.[10] Operácia update je získanie alebo spojenie (merge (čítaj merdž)) zmien repozitára do programátorovej pracovnej kópie.[6]

Princíp činnosti

[upraviť | upraviť zdroj]

CVS sa typicky používa ako viacpoužívateľská aplikácia typu klient-server: história verzií je uložená na jednom centrálnom serveri a klientske počítače majú kópie súborov, na ktorých vývojári práve pracujú.[7] Na rozdiel od starších systémov RCS a SCCS, ktoré súbor počas úprav zamknú pre jediného vývojára, umožňuje CVS viacerým vývojárom upravovať ten istý súbor súčasne.[9][7] Každý vývojár pracuje vo vlastnom adresári a CVS ich prácu po skončení zlúči.[8] Ak medzičasom niekto iný uložil do repozitára novšiu verziu, musí vývojár pred vlastným commitom najprv aktualizovať svoju pracovnú kópiu; zmeny ostatných sa do nej väčšinou zlúčia automaticky a ručne treba riešiť len občasné konflikty.[6][1]

Históriu každého súboru ukladá CVS v rovnakom formáte ako RCS: všetky verzie súboru sú uložené v jednom súbore, ktorý obsahuje len rozdiely medzi nimi.[7][20] Pri binárnych súboroch CVS nevie sám zobraziť rozdiely medzi verziami ani ich zlúčiť; pri konflikte ponúkne používateľovi obe verzie súboru a výber nechá na neho.[21] Symbolické odkazy príkaz cvs import ignoruje.[22]

Server môže repozitár sprístupniť aj anonymne, len na čítanie: klient sa prihlási ako používateľ bez osobného hesla (napríklad anonymous alebo anoncvs) a do repozitára nemôže zapisovať zmeny.[23][24] Takto sprístupnil svoj zdrojový kód napríklad projekt OpenBSD.[24] Po každom úspešnom commite môže CVS spúšťať skripty určené v administratívnom súbore loginfo, ktoré napríklad zapisujú popisy zmien do súboru alebo ich posielajú e-mailom.[25][7]

Klienti a platformy

[upraviť | upraviť zdroj]

Servery CVS bežia na väčšine variantov Unixu, klienti sú dostupní aj pre Windows, OS/2 a VMS.[7] Okrem klienta pre príkazový riadok existujú aj nadstavby s grafickým používateľským rozhraním, napríklad programy WinCvs pre Windows, MacCvs pre Mac a gCvs pre Unix a Linux z projektu CvsGui.[26] Podporu CVS majú zabudovanú aj niektoré vývojové prostredia, napríklad Eclipse.[27]

Dick Grune vytvoril CVS, aby mohol spolupracovať so svojimi študentmi Erikom Baalbergenom a Maartenom Waagem na prekladači jazyka C v rámci projektu Amsterdam Compiler Kit; každý z nich pracoval v inom čase. Projekt študentov trval od júla 1984 do augusta 1985.[1] Systém sa pôvodne volal cmt, pretože umožňoval nezávisle ukladať (angl. commit) verzie; názov CVS dostal, keď Grune po skončení projektu skripty upravil.[1] Upravené skripty poslal 23. júna 1986 do moderovanej diskusnej skupiny Usenetu comp.sources.unix (mod.sources), kde vyšli v 6. zväzku v júli 1986.[1][8][28]

Súčasná podoba CVS vychádza z práce Briana Berlinera, ktorý ho v apríli 1989 navrhol a naprogramoval nanovo v jazyku C; s návrhom modulov a podpory dodávateľských vetiev (angl. vendor branches) mu neskôr pomáhal Jeff Polk.[8][1] Berliner svoje rozšírenia opísal v článku CVS II: Parallelizing Software Development na zimnej konferencii USENIX v roku 1990; CVS v ňom predstavil ako nástroj, ktorý spoločnosť Prisma používala pri vývoji jadra operačného systému SunOS.[9][1] 19. novembra 1990 poslal Berliner verziu CVS 1.0 moderátorovi skupiny comp.sources.unix a nadácii Free Software Foundation.[3]

V roku 2003 získal CVS ocenenie USENIX STUG Award.[1] Posledná verzia vývojovej rady 1.12, 1.12.13, vyšla 28. septembra 2005[5] a posledná stabilná verzia 1.11.23 vyšla 8. mája 2008.[4]

Nedostatky a nástupcovia

[upraviť | upraviť zdroj]

CVS sa stal de facto štandardom na správu verzií vo svete softvéru s otvoreným zdrojovým kódom, podľa autorov systému Subversion najmä preto, že dlho neexistovala lepšia alternatíva so slobodnou licenciou.[29] Za jeho prednosti považovali slobodnú licenciu a podporu práce cez sieť, vďaka ktorej mohli na jednom projekte spolupracovať aj geograficky vzdialení programátori.[30]

Systém má však viacero známych nedostatkov. Sleduje len históriu jednotlivých súborov, nie adresárov, preto nepodporuje kopírovanie ani premenovanie súborov so zachovaním histórie; zmeny sa pri commite neukladajú atomicky (ako jeden celok) a binárne súbory spracúva menej efektívne ako textové.[15][31] Pri veľkých repozitároch môže byť pomalé aj vytváranie vetiev: v jednom firemnom repozitári s vyše 1 GB zdrojových textov a asi 6 500 súbormi trvalo vytvorenie vetvy v extrémnych prípadoch až hodinu.[32]

Ako náhradu CVS začala v roku 2000 spoločnosť CollabNet vyvíjať systém Subversion, ktorý mal zachovať model práce CVS, ale odstrániť jeho najzjavnejšie chyby; od 31. augusta 2001 spravovali vývojári Subversion jeho zdrojový kód už v ňom samom.[29] Neskôr sa najrozšírenejším systémom na správu verzií stal Git: v prieskume webu Stack Overflow z roku 2022 ho používalo 93,87 % zo 71 379 respondentov.[33]

Referencie

[upraviť | upraviť zdroj]
  1. 1 2 3 4 5 6 7 8 9 GRUNE, Dick. Concurrent Versions System CVS [online]. dickgrune.com, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  2. 1 2 Concurrent Versions System – Summary [online]. GNU Savannah, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  3. 1 2 Contents of /ccvs/NEWS (revision 1.1) [online]. GNU Savannah, [cit. 2026-10-04]. Dostupné online. Archivované 2025-11-16 z originálu. (po anglicky)
  4. 1 2 PRICE, Derek Robert. Stable CVS Version 1.11.23 Released! [online]. GNU Savannah, 2008-05-08, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  5. 1 2 PRICE, Derek Robert. CVS Feature Version 1.12.13 Released! * Security Update * [online]. GNU Savannah, 2005-09-28, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  6. 1 2 3 4 STOPAK, Jacob. The Evolution of Version Control System (VCS) Internals [online]. Initial Commit, 2019-11-30, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  7. 1 2 3 4 5 6 7 8 CVS – Open Source Version Control [online]. nongnu.org (Free Software Foundation), [cit. 2026-10-04]. Dostupné online. (po anglicky)
  8. 1 2 3 4 5 CVS – Concurrent Versions System v1.12.12.1: Overview [online]. Ximbiot, [cit. 2026-10-04]. Dostupné online. Archivované 2012-04-15 z originálu. (po anglicky)
  9. 1 2 3 BERLINER, Brian. CVS II: Parallelizing Software Development [online]. USENIX, 1990, [cit. 2026-10-04]. S. 341 – 352. Dostupné online. (po anglicky)
  10. 1 2 CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 7. (po anglicky)
  11. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-05]. Dostupné online. Kapitola 2.5 Multiple repositories, s. 17. (po anglicky)
  12. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-05]. Dostupné online. Kapitola 2.10 Read-only repository access, s. 31. (po anglicky)
  13. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-05]. Dostupné online. Kapitola 3.2 Defining the module; C.1 The modules file, s. 35, 153. (po anglicky)
  14. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-05]. Dostupné online. Kapitola 2.2 How data is stored in the repository, s. 8. (po anglicky)
  15. 1 2 COLLINS-SUSSMAN, Ben; FITZPATRICK, Brian W.; PILATO, C. Michael. Subversion's Features [online]. 2005, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  16. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-05]. Dostupné online. Kapitola 4.4 Tags–Symbolic revisions, s. 39. (po anglicky)
  17. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 45. (po anglicky)
  18. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-05]. Dostupné online. Kapitola 1.3.1 Getting the source; 10.1 File status; C.3 Trigger Scripts, s. 4, 68, 156. (po anglicky)
  19. ↑ FOGEL, Karl. Open Source Development with CVS. [s.l.] : Coriolis, 2000. [cit. 2026-10-05]. Dostupné online. Kapitola How Watches Work. (po anglicky)
  20. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 1. (po anglicky)
  21. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 65. (po anglicky)
  22. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 128. (po anglicky)
  23. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 24 – 25. (po anglicky)
  24. 1 2 CRANOR, Charles D.; DE RAADT, Theo. Opening the Source Repository with Anonymous CVS [online]. USENIX (FREENIX 1999), 1999, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  25. ↑ CEDERQVIST, Per. Version Management with CVS for cvs 1.12.13. [s.l.] : Free Software Foundation, 2005. [cit. 2026-10-04]. Dostupné online. S. 163 – 164. (po anglicky)
  26. ↑ CvsGui [online]. SourceForge, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  27. ↑ CVS FAQ [online]. Eclipse Foundation (Eclipsepedia), [cit. 2026-10-04]. Dostupné online. (po anglicky)
  28. ↑ GRUNE, Dick. v06i040: CVS, an RCS front-end (cvs), Part1/2 [online]. 1986, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  29. 1 2 COLLINS-SUSSMAN, Ben; FITZPATRICK, Brian W.; PILATO, C. Michael. Subversion's History [online]. 2005, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  30. ↑ COLLINS-SUSSMAN, Ben; FITZPATRICK, Brian W.; PILATO, C. Michael. Preface [online]. 2005, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  31. ↑ COLLINS-SUSSMAN, Ben. Dispelling Subversion FUD [online]. [cit. 2026-10-04]. Dostupné online. Archivované 2011-07-18 z originálu. (po anglicky)
  32. ↑ WEST, Adrian. cvs branchtag performance fix [online]. 2004-07, [cit. 2026-10-04]. Dostupné online. Archivované 2009-08-03 z originálu. (po anglicky)
  33. ↑ 2022 Developer Survey: Version control [online]. Stack Overflow, 2022, [cit. 2026-10-04]. Dostupné online. (po anglicky)

Externé odkazy

[upraviť | upraviť zdroj]

Tento článok je čiastočný alebo úplný preklad článkov Concurrent Versions System na anglickej Wikipédii a CVS na českej Wikipédii.