LenkaKT L.M.A.T.

Inteligentní archiv

Krátké seznámení s CVS, Softwarové noviny, 6/2000

Stručné představení

Každý, kdo píše webové stránky, programuje nebo chystá stěžejní knihu o povaze černých mloků, se jistě někdy potýkal s různými verzemi téhož dokumentu nebo souboru. Tyto verze je většinou nutné nějak archivovat, aby bylo možné se k nim vracet v případě, že do nové verze zanesete chyby nebo vás nová verze prostě omrzí. Jestliže na tvorbě spolupracuje několik autorů nebo vývojářů současně, problém narůstá do dalšího rozměru, protože je nutné vytvořit pořádek v různých verzích od různých autorů. Postupem času proto vznikly programy, které nahrazují funkci archivu. Spravují originály všech verzí, vytvoří si v nich pořádek a na požádání vám vydají libovolnou verzi dokumentu. Většinou také dokáží ohlídat, aby si jednotliví spolupracovníci navzájem neničili práci přepisováním svých verzí. Mnohé nabízejí ještě různá další ulehčení práce v týmu. Jedním z takových programů je i program CVS, na který se nyní podíváme blíže.

Název CVS je zkratkou anglického názvu Concurrent versions system, který se do češtiny většinou překládá jako systém pro správu verzí. CVS je velmi inteligentní archiv, který se postará o většinu vašich souborů. V archivu můžete mít uložen vcelku neomezený počet různých projektů a pracovat s nimi nezávisle na sobě. Archiv za vás hlídá změny v jednotlivých souborech a proto je možné kdykoliv se vrátit k libovolné z předcházejících verzí. CVS pomůže i ve velkých týmech, protože uhlídá možné konflikty vznikající v situacích, kdy se pokouší několik vývojářů pracovat ve stejný čas s jedním souborem. Netrpělivým šéfům nabízí CVS ještě jednu možnost: mohou průběžně sledovat, se kterými soubory se právě pracuje. Archiv vám poskytne také informaci o tom, kdo se soubory pracuje, u kterého sedí počítače a kdy svou práci zahájil. Tyto informace nejsou pochopitelně určeny jen vedoucím: může si je kdykoliv vyžádat každý z uživatelů archivu. A poslední výhoda: uživatelé archivu mohou pracovat s libovolným operačním systémem. Archivu je úplně jedno, jestli komunikuje s uživatelem pracujícím ve Windows, Linuxu nebo MacOS.

Základní princip práce s archivem je jednoduchý: v archivu jsou umístěny všechny verze souborů obsažených v projektech. Každý z uživatelů si v libovolný okamžik smí vyžádat od archivu pracovní kopii projektu. Obdrží přesnou kopii projektu uloženého v archivu, při přenosu se zachovává struktura adresářů a souborů projektu. Po provedení úprav v projektu uživatel odesílá změny zpět do archivu, který si je zanese do svého systému a vytvoří novou verzi projektu. Při práci s archivem je možné cestovat v čase směrem dozadu: máte přístup ke všem verzím projektu, které kdy v historii vznikly. Verze jsou dostupné buď pod svým číslem nebo datem vzniku. Váš dotaz proto obsahuje buď specifikaci čísla verze, o kterou máte zájem, nebo určení data a času — v takovém případě získáte pracovní kopii projektu ve stavu, v jakém se v uvedeném čase nacházel.

Ctitelé sci-fi jistě ocení, že kromě cestování v čase podporuje CVS i paralelní světy. Vývoj projektu můžete kdykoliv rozdělit do více větví a zpracovávat v nich projekt odděleně. V jedné větvi probíhají například opravy chyb naposledy uvolněné verze programu, ve druhé vývoj nové verze.

Lokální a síťový archiv

Archiv může být pracovat ve dvou základních režimech: jako archiv lokální nebo síťový. Lokální archiv se nachází v nějakém adresáři na počítači, u kterého pracujete. Komunikaci s lokálním archivem vám zajišťuje CVS klient. CVS klient existuje pro Windows i pro Unix, v obou systémech se chová naprosto stejně. Klasický klient je program, který s uživatelem komunikuje pomocí příkazového řádku. Někomu možná práce v příkazovém řádku nevyhovuje. Existují proto i grafické klienty. Já sama mám docela dobré zkušenosti s graficky orientovaným klientem WinCVS pro Windows nebo klientem jCVS napsaným v Javě. Pro běžnou práci oba bohatě postačí, nemají však zatím uspokojivě vyřešeny některé doplňující funkce, jako je například sledování vývoje projektů. V takovém případě je nutné spokojit se s příkazovým řádkem.

Pro více uživatelů je možné připravit archiv síťový. O archiv se stará CVS server, uživatelé se serverem komunikují pomocí svých lokálních klientů. Server opět existuje pro Linux i pro Windows. Na tom, jaký operační systém jednotliví uživatelé používají pochopitelně vůbec nezáleží. K archivu umístěnému na unixovém serveru tak mohou pohodlně přistupovat uživatelé všech operačních systémů, pro které existuje klient. Vlastní archiv opět tvoří adresář, kde jsou uloženy projekty a konfigurační soubory. Při komunikaci se serverem se využívá TCP/IP, proto je při nastavování serveru nutné spustit příslušnou službu. K archivu je možné přistupovat několika způsoby. Nejjednodušší je anonymní přístup bez ověřování hesla. Dále je možné využít přístupu s kontrolou uživatelského jména a hesla (tzv. pserver) nebo šifrovaného přihlášení pomocí ssh. Důležité je, že uživatel archivu nemusí být vůbec uživatelem systému, na kterém je server nainstalován. Server neklade výrazné nároky na výkon počítače. Jestliže je archiv určen pro menší okruh uživatelů (deset a méně), kteří se s archivem spojí jednou, maximálně dvakrát denně, poslouží i starší vysloužilý počítač se slabším procesorem, relativně velkým diskem a prakticky jakoukoliv síťovou kartou. Jakmile chcete pomocí CVS nabízet návštěvníkům vašich serverů nějaké soubory ke stažení, nároky na výkonnost hardware rostou s předpokládaným počtem přístupů.

Při běžné práci s archivem vůbec nerozlišíte, zda právě pracujete s archivem lokálním nebo síťovým. V obou případech komunikujete s klientem, který vypadá pokaždé stejně. Jediným rozdílem bývá, že se k síťovému archivu musíte přihlásit.

Jak vlastně CVS pracuje

Abyste si učinili přesnou představu o možnostech a schopnostech CVS, je nezbytně nutné pochopit, jak vlastně informace o projektu uchovává. CVS je program navržený pro správu archivů se zdrojovými kódy a je důsledně orientován na textové soubory. Jednotlivé soubory tvořící projekt nejsou v archivu uloženy v přesně stejné podobě, v jaké se dostanou ke koncovým uživatelům, ale v takzvaném RCS formátu. CVS si neukládá všechny verze jednotlivých souborů, pamatuje si pouze změny mezi jednotlivými verzemi. Znamená to, že si pamatuje přesně poslední verzi a potom si ukládá informaci, co se kdy změnilo vůči verzi předcházející. Změny mezi verzemi si CVS zapisuje tak, že si poznamená, kde se v souboru změnily nebo přibyly nějaké znaky. Výrazně se tak šetří místem na disku.

I při práci s vaší kopií projektu se zachází se všemi soubory jako se soubory textovými. Jestliže si své soubory změníte a požádáte archiv, aby vám změny označil, sáhne do vašich souborů a přidá řádky označující rozdíly proti verzi souborů v archivu. Při ukládání projektu do archivu je proto nezbytně nutné včas označit soubory, které nejsou textové (například obrázky). Do těchto souborů potom CVS nezapisuje a pamatuje si je celé. Rovnou tak můžeme odhadnout, k čemu se vlastně archiv hodí, a na co je naopak nepoužitelný. Projekty, kde je podstatné uloženo v textových souborech a binární soubory jsou jen doplňující, jako jsou zdrojové kódy programů, kódy webových stánek, XML dokumenty apod. můžeme v klidu vložit do archivu a spokojeně využívat všech výhod, které archiv nabízí. Naopak projekty, které jsou tvořeny především sadou dokumentů vytvořených například v nějakém komerčním textovém editoru, jako je MS Word či Star Office, jsou pro CVS naprosto nevhodné. Většina dokumentů nejsou textové soubory. (Nenechte se zmást představou, že máte v dokumentech texty. Textový soubor je soubor, ve kterém je text uložen pomocí tzv. ASCII kódu a to není tento případ.) Projekt tak můžete uložit do archivu, ale nebude možné využít všechny nástroje pro práci s archivem.

Práce s archivem je jednoduchá. S archivem se komunikuje pomocí příkazů, zadávaných v příkazovém řádku. U grafických klientů se příkazy skrývají za položkami jednotlivých nabídek. Jak už jsem uvedla, po prvním přenesení projektu do archivu mohou všichni uživatelé, kteří znají jméno projektu, získat tzv. pracovní kopii. Soubory tvořící projekt se přenesou na pevné disky jejich počítačů. Se soubory mohou zcela svobodně pracovat. Kdykoliv uživatel archivu provede ve své pracovní kopii výraznější změny, odešle je jedním příkazem do archivu. V ideálním případě tak vzniká nová verze projektu. Může se však stát, že těsně před naším uživatelem do archivu odešle jiné změny někdo další. Nová verze by mohla tyto změny přepsat. V takovém případě nová verze nevzniká, nastává situace, které se říká konflikt. CVS uživateli v jeho souborech označí, kde dochází ke konfliktu. U binárních souborů jen označí, že ke konfliktu dochází, ale nezasahuje do nich. Uživatel se nyní musí rozhodnout, co udělá. Může se spojit se svými kolegy, nebo podle vlastní úvahy změny nějak sloučit. Při novém pokusu o odeslání již ke konfliktu nedojde a vzniká nová verze.

Verze souborů jsou v projektu číslované a kdykoliv je možné se k libovolné verzi souboru vrátit. Je možné cestovat i v čase: můžete přesně určit, jak starou verzi projektu nebo souboru vlastně chcete. Dále je možné některé důležitější verze projektu pojmenovat a přistupovat k nim pomocí jména (u vývoje programu tak můžete označovat například jednotlivé uvolněné beta verze, u webových stránek třeba verze, které jste opravdu vyvěsili na Internet, nebo u knížky verze, které šly na korektury). Dále je možné projekt rozdělit do několika větví. Můžete tak současně opravovat chyby v naposledy uvolněné verzi programu a pracovat na nové verzi.

Další výhodou, kterou CVS přináší, je možnost sledovat vývoj jednotlivých souborů. Každý z uživatelů archivu se může přihlásit ke sledování souborů projektu. Počet sledovaných souborů není nijak omezen. Uživatel je potom informován o tom, kdo se souborem právě pracuje, kdy práci ukončil a kdy odeslal novou verzi do archivu. Dá se tak předejít mnoha konfliktům, protože se o změnách v archivu dozvíte včas. Sledování může využít (nebo zneužít?) i šéf celého projektu ke kontrole, co jeho podřízení vlastně dělají. Jak budou uživatelé archivu informování o změnách lze nastavit v konfiguraci projektu, v naprosté většině případů se zprávy posílají elektronickou poštou.

V konfiguraci archivu je dále možné nastavit, zda se má soubor před uložením do archivu zpracovat nějakým skriptem nebo programem. (Tento rys nefunguje příliš dobře u síťových archivů). Můžete tak před uložením do archivu automaticky komprimovat velké obrázky a před přenosem k uživateli je zase automaticky rozbalovat, nebo před uložením nové verze XML dokumentu automaticky provádět konverzi pomocí stylů do jiného formátu.

Závěr

Týmům, které spolupracují na vývoji nějakého softwaru, nebo webových stránek, CVS vřele doporučuji. Ušetříte si tak mnoho starostí a získáte úžasný přehled o vývoji vašeho projektu. Budete schopni kdykoliv předložit libovolnou verzi projektu, nebo přesně ukázat, co jste kde měnili. Archiv využijí i ostatní, kdo pracují jen s textovými soubory: autoři knížek, kteří své knížky sází v TeXu nebo píší v XML.

Je-li vaše práce založená na spoustě binárních souborů, musíte se zkusit poohlédnout po jiném typu archivu, než je právě CVS.

Pro:

  • Grafický klient pro většinu operačních systémů

  • Umožní spolupracovat uživatelům různých operačních systémů

  • Cena: GNU programy jsou, jak je dobrým zvykem, zdarma

Proti:

  • Nepodporuje dobře práci s binárními soubory

Zdroje:

Nejvíce informací o CVS , Grafický klient pro Windows, Grafický klient v Javě, Server pro Windows.

Autorkou tohoto webu je LenkaKT, alias Lenka Kosková-Třísková. Bádám a vyučuji na TU Liberec.

Poslední změna: 3. 3. 2011