Obsah Concurrent Version System CVS.......................................................................................................... 2 Přístupy............................................................................................................................................ 2 Příkazy ............................................................................................................................................. 2 Nástroje pro práci s CVS .................................................................................................................. 4 Concurrent Version System CVS Jedním z prvních (použitelných) verzovacích systémů je systém Concurrent Version System CVS. Je používán od roku 1991 v podstatě dodnes. Jedná se standardní verzovací systém, ve kterém lze spravovat několik repositářů se samostatným řízením přístupu. Lokální kopie = pracovní adresář (working directory WD) Jednotlivé repositáře mohou být vnitřně členěny do jednotlivých modulů. Každý modul pak obsahuje zpravidla více souborů, které jsou organizovány ve stromové struktuře. To v podstatě odpovídá i uložení samotného verzovacího systému do adresářové struktury systému. Každý z těchto souborů má vedeno samostatné verzování. Verze modulu/aplikace je pak reprezentována tagem, který označuje jednotlivé releasy aplikace společně pro všechny soubory. Větvení odpovídá klasické definici verzovacích systémů - příkaz branch. Přístupy Pro práci s CVS existuje několik možných přístupů:  ext / ssh - přístup pomocí ssh protokolu, klíč často uložen v souboru nebo nějakém agentu,např. putty agent  pserver - přístup jménem a heslem  fork  gserver  kserver  local Příkazy add Add a new file/directory to the repository admin Administration front end for rcs annotate Show last revision where each line was modified checkout Checkout sources for editing CVS Repository 1 Repository 3Repository 2 WD 11 WD 12 WD 21 commit Check files into the repository diff Show differences between revisions edit Get ready to edit a watched file editors See who is editing a watched file export Export sources from CVS, similar to checkout history Show repository access history import Import sources into CVS, using vendor branches init Create a CVS repository if it doesn't exist log Print out history information for files login Prompt for password for authenticating server logout Removes entry in .cvspass for remote repository pserver Password server mode rannotate Show last revision where each line of module was modified rdiff Create 'patch' format diffs between releases release Indicate that a Module is no longer in use remove Remove an entry from the repository rlog Print out history information for a module rtag Add a symbolic tag to a module server Server mode status Display status information on checked out files tag Add a symbolic tag to checked out version of files unedit Undo an edit command update Bring work tree in sync with repository version Show current CVS version(s) watch Set watches watchers See who is watching a file Nástroje pro práci s CVS Jednotlivé příkazy můžeme buď zadávat přímo z příkazové řádky systému nebo můžeme použít některý z dostupných grafických nástrojů - např. WinCVS, Tortoise CVS nebo ViewVC. Příkazová řádka Jak je vidět z obrázku není nutné vypisovat jednotlivé příkazy, ale je možné používat jejich zkratky. Soubory, které ještě do CVS nejsou zaregistrovány jsou označeny ? na začátku řádky. Ten se po použití příkazu add změní na písmeno A. Soubory, které jsme modifikovali jsou označeny písmenem M. Příkazem diff si pak můžeme zobrazit rozdíl mezi editovaným souborem a souborem uloženým v repositáři. Po zadání příkazu commit je uživatel vyzván k zadání logu/komentáře pro daný commit. Současně se zobrazí seznam commitovaných souborů. Vložený komentář bude vložen ke všem souborům, kterých se commit týká. user@server:/app/home/user/wd_cvs/htdocs/web> cvs update user@server:/app/home/user/wd_cvs/htdocs/web> cvs up user@server:/app/home/user/wd_cvs/htdocs/web> user@server:/app/home/user/wd_cvs/htdocs/web> WinCVS Program WinCVS je grafickým prostředím pro práci s repositářem CVS. Uživatelsky je příjemnější než příkazová řádka Aplikace je rozdělena do tří základní oken - adresářové, pracovní a logovací okno. V pracovním okně se zobrazují soubory z vybraného adresáře. U každého souboru vidíme číslo verze souboru, který máme ve svém pracovním adresáři i datum poslední modifikace souboru. Barevně jsou odlišeny modifikované soubory. Soubory, které nebyly přidány do repositáře jsou opět označeny otazníkem ? a jejich status je neznámý. U jednotlivých souborů pak máme přes kontextové menu dostupné příkazy pro práci s repositářem. Příkazy pro práci s repositářem, nejen pro jednotlivé soubory, jsou také dostupné ze základního menu aplikace. Do prostředí WinCVS můžeme také integrovat externí editory, např. PSPad, a nástroje pro porovnávání jednotlivých souborů, např. WinMerge. TortoiseCVS Prostředí TortioseCVS není ucelenou aplikací, jak jsme u vývojových prostředí zvyklí. Prostředí TortoiseCVS je dostupné z kontextového menu pro jednotlivé soubory a adresáře. Jeho obsah se mění podle toho, co vybraný adresář nebo soubor reprezentuje. Pokud je vybraný adresář modulem, pak máme k dispozici příkazy pro práci s modulem. U jednotlivých souborů a adresářů na první pohled nepoznáme, zda se jedná o soubor nový, modifikovaný či nezměněný. To lze poznat až po vyvolání kontextového menu. V rámci Historie si můžeme zobrazit všechny commity vybraného souboru a komentáře k těmto commitům můžeme také modifikovat. Současně máme zobrazeno, kdo a kdy daný commit provedl a jaké změny na souboru proběhly. Případně si můžeme zobrazit přehledný graf verzí. Z kontextového menu je patrné, že máme k dispozici příkazy pro tagy, označující jednotlivé releasy, i pro branche, větvení i spojování větví. V rámci nastavení můžeme mimo jiné upřesnit nástroje pro porovnání verzí, připojení k serveru apod. user@server ViewVC Jedná se o webové rozhraní centrálního repositáře. V rámci tohoto rozhraní si uživatel může zobrazit jednotlivé adresáře stromové struktury CVS. V rámci adresáře se u každého souboru zobrazí číslo poslední verze souboru, doba od poslední změny, autor poslední změny a jeho komentář ke commitu. V rámci adresáře pak může uživatel omezit zobrazené commity na základě vyhledávacího formuláře. Pro vybraný soubor se pak zobrazí kompletní historie změn s informací o verzi, autorovi i komentáři ke všem commitům, včetně všech větví a tagů. Navíc si uživatel může vybrat, ke které verzi chce provést porovnání změn (diff). A následně si tento diff také zobrazit. user1 user1 user2 user1 Typ zobrazených rozdílů lze dle potřeby měnit.