A Concurrent Versions System (magyarul Egyidejű verziók rendszere, röviden CVS), más néven Concurrent Versioning System (magyarul Egyidejű verziókezelő rendszer) egy kliens-szerver szabad szoftver verziókezelő rendszer a szoftverfejlesztés területén. Egy verziókezelő rendszer nyomon követ adott fájlok egy halmazán végzett minden munkát és minden változást, és lehetővé teszi számos fejlesztő számára (potenciálisan egymástól függetlenül térben és időben) az együttműködést. Dick Grune fejlesztette ki a CVS-t shell script-ek sorozataként 1986 júliusában.[4]

Concurrent Versions System
FejlesztőThe CVS Team
Első kiadás1990-11-19
Legfrissebb stabil kiadás1.11.23 (stabil verzió, 2008. május 8., https://ftpmirror.nongnu.org/non-gnu/cvs/source/stable/1.11.23/)[1][2]
Legfrissebb fejlesztői kiadás1.12.13 (feature release, bétaverzió, 2005. szeptember 28., https://ftpmirror.nongnu.org/non-gnu/cvs/source/feature/1.12.13/)[3]
Programozási nyelvC
Operációs rendszerUnix-szerű, Windows
Kategóriaverziókezelő szoftver
LicencGNU General Public License
A Concurrent Versions System weboldala

A GNU General Public License alatt kiadott szoftver a szabad szoftveres világ mellett a kereskedelmi fejlesztők körében is elterjedt. Habár volt rendszeres fejlesztés, melynek során új funkciókat és hibajavításokat is készítettek a múltban,[5] beleértve a rendszeres buildeket és teszt eredményeket,[6] 2008 óta nincs új kiadás.[7] A termék meglehetősen érett, és nem adnak ki új kiadást, amíg nem érkeznek kívánságok új funkciókra[8] vagy hibajelentések.[9]

Funkciók szerkesztés

A CVS kliens-szerver architektúrát használ: a szerver tárolja a projektet és történetének aktuális verzióit, és a kliens csatlakozik a szerverre, hogy a projekt egy teljes másolatát le tudja szedni („check out”), majd ezen a másolaton dolgozik és végül beküldi („check in”) a változásait a szerverre. Tipikusan a kliens és a szerver egy helyi hálózaton vagy az interneten keresztül csatlakozik egymáshoz, de a kliens és a szerver futhat ugyanazon a gépen is, ha a CVS-nek csak az a feladata, hogy a helyi fejlesztők munkáját és ezzel kapcsolatos projekttörténetet kövesse nyomon. A szerver szoftver általában Unixon fut (habár a CVSNT szerver szintén támogat számos Microsoft Windows verziót), míg a CVS kliens futhat bármely elterjedtebb operációs rendszeren.

Korlátlan számú fejlesztő dolgozhat ugyanazon a projekten párhuzamosan, mindegyik szerkeszthet fájlokat a projekt saját „munkamásolatában” és beküldheti (vagy beteheti) a módosításait a szerverre. Azért, hogy elkerüljük, hogy az emberek egymás tyúkszemére léphessenek, a szerver csak a legutolsó változaton történt változtatásokat fogadja el. A fejlesztőktől ezért elvárás, hogy tartsák a saját munkamásolatukat naprakészen a többiek változásainak rendszeres frissítésével. Ezt a feladatot a cvs kliens nagyrészt automatikusan elvégzi, és csak a betett módosítások és még nem berakott fájl helyi változata közti szerkesztési összeütközés során kér kézi beavatkozást.

Ha a berakás művelet sikerült, akkor minden érintett fájl verziószáma automatikusan növekszik, és a CVS szerver új sort ír a felhasználó által megadott leírással, a dátummal és szerző nevével a naplófájljaiba. A CVS képes futtatni külső, felhasználó által megadott naplófeldolgozó parancsfájlt is minden elfogadásra (angolul commit). Ezek a parancsfájlok bejegyzésenként telepíthetők a CVS loginfo fájljában, ezekkel képes indítani e-mail-értesítést vagy átkonvertálni a naplóadatokat más, pl. webalapú formátumba.

A kliensek össze tudnak hasonlítani verziókat, teljes változástörténetet, vagy lehozni adott dátumhoz vagy felülvizsgálati számhoz (angolul revision number) a projekt történetének egy pillanatfelvételét.

Névtelen CVS szerkesztés

Számos nyílt forráskódú projekt megengedi a „névtelen olvasási hozzáférést”; ennek népszerűsítésében az OpenBSD járt élen. Ez azt jelenti, hogy kliensek le tudják szedni a projektet, és össze tudják hasonlítani verziókat a sajátjukkal egy üres vagy egyszerűen közzétett jelszó segítségével (pl. „anoncvs”), csak változások berakása kívánja meg, hogy rendelkezzenek személyes fiókkal és jelszóval.

A kliensek használhatják a „frissítés” parancsot, hogy a helyi másolatukat naprakészre hozzák a legújabb verziókkal frissítve azt a szerverről. Ezzel elkerülhető az egész projekt újból és újból való letöltési kényszere.

A CVS képes kezelni egy adott projekt különböző fejlesztési ágait is. Például egy szoftver egy kiadási verziója alkothat egy ágat, pl. hibajavításhoz, míg egy másik verzió, a jelenlegi fejlesztéshez, a főbb változások és új funkciók bevezetéséhez alkothat egy ettől különböző ágat.

A CVS delta tömörítést használ az ugyanazon fájl különböző verzióinak hatékony tárolására. Ez jól működik nagy szöveges fájlokkal, ahol egyszerre kevés változtatás van a verziók között, amilyenek pont a forrásfájlok. Másrészről, amikor a CVS-nek megmondjuk, hogy binárisan tároljon egy fájlt, akkor képes a szerveren tartani az összes különböző változatot. A fájlok bináris tárolása fontos lehet, azért hogy elkerüljük a bináris fájlsérüléseket.

„ A nyílt forráskódú szoftver világában a Concurrent Version System (CVS) egy régóta létező eszköz. Megfelelő választás a verziókövetésre, és ez így van rendjén. A CVS maga egy szabad szoftver és a nem kizárólagos működési módja és hálózati műveletek támogatása – amely lehetővé teszi tucatnyi földrajzilag szétszórt programozó számára, hogy megoszthassák munkájukat – kiválóan illeszkedik a nyílt forráskódú világ együttműködésen alapuló természetéhez. A CVS és fél-kaotikus fejlesztési modellje sarokkövévé vált a nyílt forráskódnak.”

– Collins-Sussman, Verziókövetés a Subversionnel a Subversion 1.1-hez, 2005

Szaknyelv szerkesztés

A CVS felcímkéz egy projektet (érintett fájlok egy halmazát), amit modulként kezel. A CVS szerver tárolja a modulokat, amit a saját tárolójában kezel. A fejlesztők a modulok másolatait a check out (lehozás) paranccsal szerezhetik meg. Ezek a lehozott fájlok munkamásolatokként, homokozóként ill. munkaterületként működnek. A munkamásolaton végzett változtatások a tárolóban tükröződhetjük le azzal, hogy commitáljuk, azaz betesszük őket. Frissíteni annyit jelent, mint megszerezni, illetve egyesíteni a változásokat a távoli tárolóból a munkamásolattal.

Története és jelenlegi állapot szerkesztés

A CVS-t a Revision Control System (RCS) nevű verziókezelő rendszerből (ma – 2008-ban – is használatban van) fejlesztették ki, amely képes fájlokat kezelni külön-külön, de egy teljes projektet nem. Dick Grune ad némi rövid történeti összefoglalót a CVS-ről a honlapján:[10]

„Én készítettem a CVS-t, hogy képesek legyünk együttműködni a diákjaimmal, Erik Baalbergennel és Maarten Waage-nel az ACK (Amsterdam Compiler Kit) C fordítóval kapcsolatban. Mindhárman jelentősen különböző időszakokban dolgoztunk (az egyik diákom normál 9-től 5-ig, a másik szabálytalan időszakokban, én pedig csak esténként dolgoztam a projekten). A projektjük 1984 júliusától 1985 augusztusáig futott. A CVS-t eredetileg cmt-nek hívtuk, nyilvánvaló okokból, amely lehetővé tette számunkra, hogy verziókat függetlenül tegyük be.”

– Dick Grune

Grune a kódot nyilvánosan 1986. június 23-án adta ki, a Google Groups továbbra is tárolja és kiszolgálja az eredeti usenet postot.[11]

A kódot, amely végül a CVS jelenlegi verziójává vált, Brian Berliner kezdte el fejleszteni 1989 áprilisában. Később további kódokat kapott Jeff Polktól és más közreműködőktől is. Brian Berliner írt egy egy tanulmányt,[12] melyben bemutatta a továbbfejlesztéseit a CVS programhoz, és azt, hogy az eszközt hogyan bővítette ki és hogyan használták egy belső Prisma nevű projektben, egy harmadik fél által fejlesztett SunOS kernel fejlesztése során, és melyet közösség javára adtak ki GPL alatt. 1990. november 19-én a CVS 1.0 verziót benyújtották a Free Software Foundation fejlesztésre és terjesztésre.[13]

A CVS vezette be az elágazás implementációját a verziókezelő rendszerekben.[14] Habár a RCS ismerte az ágak fogalmát, ezt csak fájlok külön-külön tudta használni.

A CVS mindig szilárdan támogatott elosztott, több weboldalon és offline műveletekre is, néhány megbízhatatlan számítógépes hálózat miatt, melyek abban az időben léteztek, amikor a CVS kifejlődött.

Fejlesztések állapota szerkesztés

Jelenleg nincs kiadott hivatalos közlemény a projekt státuszáról.

  • A CVS aktív fejlesztése hagyományosan új kiadásokkal követi az új funkció kéréseket ill. hibajelentéseket.[9]
  • A legutolsó verziót 2008. május 8-án adták ki.[7]
  • 2008 óta volt néhány karbantartási hibajavítás a CVS projekt saját CVS tárolójában.[15]
  • Hibát ill. bővítési javaslatot nem jelentettek be,[16] habár a legutolsó kódváltozás, ami teljes (teljesíti a javítás követelményét) összesen 9 bejelentés van, a legtöbbje kérdés. A kérdéseket tipikusan gyorsan meg szokták válaszolni, amennyiben a levelező listán teszik fel őket.
  • Az info-cvs levelező lista aktívan válaszol a kérdésekre.[17]
  • Hivatkozások a hivatalos CVS oldalra, amely külső weboldalra (ximbiot.com) mutat, mint pl. 'Current Events', nem működnek[18] as is the CVS wiki.[19] Archív információk elérhetők új hivatkozásokkal
  • Az utolsó üzenet a CVS—Announce levelező listán 2008. május 8-án volt feladva.[20]
  • A legutolsó berakás a CVS kód tárolójába 2011. március 30-án volt.[21]

A CVS Microsoft Windows, Linux, Solaris, HPUX, I5OS és Mac OS X portolásának fejlesztése levált önálló projektekre, mint pl. a CVSNT, amely jelenleg is aktív fejlesztés alatt áll.[22]

Kapcsolat a GNU-val szerkesztés

Történetileg a kapcsolat a CVS és a GNU projekt között némileg homályos: a GNU weboldal terjeszti a programot, és GNU csomagként van címkézve az egyik oldalon, míg más GPL-licencelt projektként a másikon. Ez az állapot végül tisztázódott, amikor a CVS fejlesztés elköltözött a cvshome.org-ról a savannah.nongnu.org-ra: a CVS-t hivatalosan is a nem GNU kategóriába sorolták. Az FTP helyen a program hagyományosan a /non-gnu/ könyvtárban volt megtalálható és máig ott is van.

A GNU projekt külön kiemeli, hogy nem tartja fenn a CVS tulajdonjogát.[23]

Utódok szerkesztés

Az idők folyamán a fejlesztők számos CVS-en alapuló verziókezelő rendszert készítettek, hogy új funkciókat adhassanak hozzá, felüldefiniálhassák a működési módokat és továbberősítsék a fejlesztők termelékenységét. Ez elég gyakran fordult elő, és elvezetett a YACC „Yet Another CVS Clone” (magyarul „még egy CVS klón”) kifejezéshez (egy szójáték a yacc unix paranccsal, amely „yet another compiler compiler” – magyarul „még egy fordító fordító” – rövidítése). A CVS-helyettesítő projektek többek között a következők: CVSNT (első kiadás 1998-ban), Subversion[24][25] (eredeti kiadás 2004-ben[26]), EVS (első kiadás 2008-ban),[27] és számos rendszer, amely támogatja az elosztott verziókezelést.

Kritikák szerkesztés


A szócikk egy része még lefordítandó. Segíts te is a fordításban!

A CVS számos jellemzőjét éri gyakori kritika.[28]

Jegyzetek szerkesztés

  1. Derek Robert Price: Concurrent Versions System - News Stable CVS Version 1.11.23 Released! (angol nyelven), 2008. május 8. (Hozzáférés: 2021. február 10.)
  2. Derek Price: Stable CVS Version 1.11.23 Released! (angol nyelven), 2008. május 8. (Hozzáférés: 2021. február 10.)
  3. Derek Robert Price: Concurrent Versions System - News CVS Feature Version 1.12.13 Released! (angol nyelven), 2005. szeptember 28. (Hozzáférés: 2021. február 10.)
  4. CVS--Concurrent Versions System v1.12.12.1: Overview. ximbiot.com - Per Cederqvist. [2012. április 15-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. december 9.)
  5. CVS Change Log. (Hozzáférés: 2011. február 22.)
  6. CVS Test Results. (Hozzáférés: 2011. február 22.)
  7. a b Index of /releases/cvs/source/stable/1.11.23. (Hozzáférés: 2013. január 15.)
  8. Open requests for fixes/features. (Hozzáférés: 2011. február 22.)
  9. a b Requests for fixes/features. (Hozzáférés: 2011. február 22.)
  10. Archivált másolat. [2014. szeptember 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. július 17.)
  11. Archivált másolat. [2017. február 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2017. február 17.)
  12. http://citeseer.ist.psu.edu/berliner90cvs.html
  13. initial release of version 1.0; CVS NEWS file
  14. CVS II: Parallelizing Software Development article by Brian Berliner. [2015. szeptember 24-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. július 17.)
  15. CVS ChangeLog. (Hozzáférés: 2009. május 25.)
  16. Open requests for fixes/features. (Hozzáférés: 2013. január 17.)
  17. CVS Mailing List. (Hozzáférés: 2013. január 17.)
  18. Current Events. [2011. március 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. január 15.)
  19. CVS Wiki. [2010. november 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. január 15.) „Companies offering commercial support for CVS are listed in the CVS Wiki.”
  20. Stable CVS Version 1.11.23 Released!. Cvs-Announce mailing list. GNU. (Hozzáférés: 2013. január 15.) „Stable CVS 1.11.23 has been released. Stable releases contain only bug fixes from previous versions of CVS.”
  21. Savannah CVS Surfing - Index of /cvs/ccvs/src. (Hozzáférés: 2013. január 15.) „gpg.c (parse_signature_subpacket): Correct spout->raw memory allocation. (Reported by David Taylor <dtaylor@emc.com>.)”
  22. About the CVSNT Project. History. March Hare Software. (Hozzáférés: 2013. január 15.) „CVS Suite 2009R2 was released in July 2011 with improved support for versioning PL/SQL triggers/procedures etc, and CVS Suite 2010 is currently being prepared for release. A major upgrade: CVS Suite 2012 is in final planning stages and is expected to be released in early 2012.”
  23. Concurrent Versions System - Summary. (Hozzáférés: 2013. január 15.) „This project is not part of the GNU Project.”
  24. Subversion FAQ: Why does this project exist?. [[Subversion (software)|]]. (Hozzáférés: 2009. szeptember 21.)
  25. Dispelling Subversion FUD. Ben Collins-Sussman. [2011. július 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. június 30.)
  26. Subversion released 26th February 2004: and the CHANGELOG proof can be found here
  27. http://www.evscm.org/
  28. Linus Torvalds. [Google Tech Talk: Linus Torvalds on git]. A jelenet helye a filmen: 2:30. (Hozzáférés ideje: 2014-07-10.)

Források szerkesztés

További információk szerkesztés

Kapcsolódó szócikkek szerkesztés

Integrált fejlesztőkörnyezetek CVS-támogatással: