Cvs
Concurrent Versions System | |
Fejlesztő | The CVS Team |
Első kiadás | 1990-11-19 |
Legfrissebb stabil kiadás | 1.11.23 (stabil verzió, 2008. május 8.)[1][2] |
Legfrissebb fejlesztői kiadás | 1.12.13 (feature release, béta-verzió, 2005. szeptember 28.)[3] |
Programozási nyelv | C |
Operációs rendszer | Unix-szerű, Windows |
Kategória | verziókezelő szoftver |
Licenc | GNU General Public License |
A Concurrent Versions System weboldala |
A Concurrent Versions System ( magyarul Konkurens verziók rendszere) röviden (CVS), más néven Concurrent Versioning System (magyarul Konkurens 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].
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, ameddig új funkciók megvalósítására nem érkeznek kérések[8], vagy hibariportok[9].
Funkciók
A CVS kliens-szerver architektúrát használ: a szerver tárolja a projekt é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 LAN-on vagy az Internet-en 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 projekt történetet kövesse nyomon kizárólag. A szerver szoftver általában egy Unix-on 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 rendszer platformon.
Korlátlan számú fejlesztő dolgozhat ugyanazon a projekten párhuzamosan, mindegyik szerkeszthet fájlokat a projekt saját "munkamásolat"ában és küldhet (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 ír új sor a felhasználó által megadott leírással, a dátummal és szerző nevével a log fájljaiba. A CVS képes futtatni külső, felhasználó által megadott log feldolgozó scriptet is minden elfogadásra (angolul commit). Ezek a scriptek 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 log adatokat más pl. Web alapú formátumba.
A kliensek össze tudnak hasonlítani verziókat, teljes változás tö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
Számos nyílt forráskódú projekt megengedi a "névtelen olvasási hozzáférés"t, amely funkció népszerűsítésében a 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 ezen forgatókönyv szerint.
A kliensek használhatják a "frissítés" parancsot, hogy a helyi másolatukat naprakésze 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
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 checking 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
A CVS-t egy korábbi verziókezelő rendszerből (névszerint a Revision Control System (RCS) (2008-as adta szerint, ma 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. Idézzük:
„Én készítettem a CVS-t, hogy képesek legyünk együttműködni a diákjaimmal Erik Baalbergen-nel é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-iges időszakban, 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, Dick Grune weboldala
Grune a kódot nyilvánosan 1986. június 23-án adta ki: Google Groups továbbra is tárolja és kiszolgálja az eredeti usenet postot.
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 Polk-tól és más közreműködőktől is. Brian Berliner írt egy egytanulmányt, 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.[10]
A CVS vezette be az elágazás implementációját a verziókezelő rendszerekben.[11] 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
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[12]
- Hibát ill. bővítési javaslatot nem jelentettek be[13], habár a legutolsó kód vá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.[14]
- Hivatkozások a hivatalos CVS oldalra, amely külső weboldalra (ximbiot.com) mutat, mint pl. 'Current Events', nem működnek [15] as is the CVS wiki.[16] Archív információk elérhetők új hivatkozásokkal
- Az utolsó üzenet a CVS--Announce levelező listán 2008-05-08-adikán volt feladva[17].
- A legutolsó berakás a CVS kód tárolójába 2011-03-30-án volt[18].
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[19].
Kapcsolat a GNU-val
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.[20]
Utódok
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ül definiá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 "csak egy másik CVS klón") kifejezéshez (egy szójáték a yacc
unix paranccsal, amely "yet another compiler compiler" (magyarul "csak egy másik 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 [21][22] (eredeti kiadás 2004-ben[23]), EVS (első kiadás 2008-ban), és számos rendszer, amely támogatja az elosztott verziókezelést.
Kritika
A CVS számos jellemzőjét éri gyakori kritika.[24]
Kritika | Válasz |
---|
Kapcsolódó szócikkek
- StatCVS, egy program, amely grafikus riportot generál a CVS tárolókból.
- TortoiseCVS, egy shell-be integrált CVSNT kliens Microsoft Windows-hoz (CVS szerverekkel általánosan használt)[25][26]
- Bonsai CVS code management system, egy eszköz mely fájlok könyvtárak és fejlesztési ágakból generál riportokat a CVS menedzsment alatt.
- Cervisia, egy KDE GUI felület a CVS-hez
- ViewVC, egy böngésző interfész a CVS tárolókhoz
- OpenGrok, egy böngésző interfész a CVS tárolókhoz
- SVN – egy fejlettebb verziókövető, a CVS utódja kíván lenni
IDEk CVS támogatással
Jegyzetek
- ↑ 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.)
- ↑ Derek Price: Stable CVS Version 1.11.23 Released! (angol nyelven), 2008. május 8. (Hozzáférés: 2021. február 10.)
- ↑ 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.)
- ↑ CVS--Concurrent Versions System v1.12.12.1: Overview. ximbiot.com - Per Cederqvist. (Hozzáférés: 2011. december 9.)
- ↑ CVS Change Log. (Hozzáférés: 2011. február 22.)
- ↑ CVS Test Results. (Hozzáférés: 2011. február 22.)
- ↑ a b Index of /releases/cvs/source/stable/1.11.23. (Hozzáférés: 2013. január 15.)
- ↑ Open requests for fixes/features. (Hozzáférés: 2011. február 22.)
- ↑ a b Requests for fixes/features. (Hozzáférés: 2011. február 22.)
- ↑ initial release of version 1.0; CVS NEWS file
- ↑ CVS II: Parallelizing Software Development article by Brian Berliner
- ↑ CVS ChangeLog. (Hozzáférés: 2009. május 25.)
- ↑ Open requests for fixes/features. (Hozzáférés: 2013. január 17.)
- ↑ CVS Mailing List. (Hozzáférés: 2013. január 17.)
- ↑ Current Events. (Hozzáférés: 2013. január 15.)
- ↑ CVS Wiki. (Hozzáférés: 2013. január 15.) „Companies offering commercial support for CVS are listed in the CVS Wiki.”
- ↑ 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.”
- ↑ 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>.)”
- ↑ 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.”
- ↑ Concurrent Versions System - Summary. (Hozzáférés: 2013. január 15.) „This project is not part of the GNU Project.”
- ↑ Subversion FAQ: Why does this project exist?. [[Subversion (software)|]]. (Hozzáférés: 2009. szeptember 21.)
- ↑ Dispelling Subversion FUD. Ben Collins-Sussman. (Hozzáférés: 2010. június 30.)
- ↑ Subversion released 26th February 2004: and the CHANGELOG proof can be found here
- ↑ Linus Torvalds. [Google Tech Talk: Linus Torvalds on git]. A jelenet helye a filmen: 2:30. (Hozzáférés ideje: 2014-07-10.)
- ↑ Barrett, Arthur: Anonymous or Developer checkout with TortoiseCVS, 2010. június 25. (Hozzáférés: 2010. július 10.)
- ↑ Barrett, Arthur: TortoiseCVS instructions – sourceforge. (Hozzáférés: 2010. július 10.)
Források
- David Thomas, Andrew Hunt. Pragmatic Version Control Using CVS. The Pragmatic Programmers (2003). ISBN 0-9745140-0-4
- Jennifer Vesperman. Essential CVS, 2e, O'Reilly (2006). ISBN 0-596-52703-9
- Per Cederqvist et al.. Version Management with CVS. ISBN 0-9541617-1-8
- Karl Franz Fogel, Moshe Bar. Open Source Development with CVS. ISBN 1-932111-81-6
További információk
- CVS projekt, melyet jelenleg Derek Price tartja karban
- Verziókezelés CVS-sel – CVS 1.12.13 kézikönyv, Per Cederqvist.