27.4. Úvod do programu CVS

CVS je velmi užitečný v případě časté editace textových souborů velkým počtem uživatelů. CVS lze použít i pro netextová data, ale za cenu velkých požadavků na prostor na serveru, protože budou ukládány všechny verze souborů celé. Navíc v takových případech není dostupná řada užitečných funkcí. Synchronizace pomocí CVS vyžaduje na rozdíl od Unison existenci jednoho centrálního serveru, ke kterému se mohou připojit všichni klienti.

27.4.1. Konfigurace CVS serveru

Server je místo, kde jsou uloženy všechny platné soubory včetně nejnovějších verzí. Jako server lze používat libovolnou pracovní stanici. Pokud je to možné, měli byste provádět pravidelné zálohování tohoto serveru.

Při konfiguraci serveru je vhodné nastavit přístup pro uživatele přes SSH. Pokud je uživatel serveru znám např. jako tux a CVS je nainstalován jak na klientovi, tak na serveru, je nutné na straně klienta nastavit následující proměnné prostředí:


CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

Příkazem cvs init lze inicializovat CVS server ze strany klienta. Tento příkaz je třeba provést pouze jednou.

Nakonec musí být synchronizaci přiřazeno jméno. Na klientovi vytvořte adresář, který bude obsahovat soubory spravované pomocí CVS. Jméno adresáře bude také jméno synchronizace. V našem případě používáme adresář pojmenovaný synchome. Jméno synchronizace nastavíme v tomto adresáři příkazem:


cvs import synchome tux wilber

Řada CVS příkazů vyžaduje komentář. Pro tento účel CVS spouští editor (definovaný proměnnou prostředí $EDITOR nebo vi, pokud jste žádný editor nenastavili). V editoru můžete doplnit komentář jako v následujícím příkladě:


cvs import -m 'toto je test' synchome tux wilber

27.4.2. Používání CVS

Od tohoto okamžiku lze k repositáři přistupovat ze všech klientů a stahovat jeho obsah pomocí příkazu cvs co synchome. Voláním tohoto příkazu se vytvoří na klientském počítači podadresář synchome. Změny provedené v tomto adresáři (tento adresář nebo některý z jeho podadresářů musí být aktuálním adresářem) odešlete do repositáře příkazem cvs commit.

Implicitně jsou na server zasílány všechny soubory včetně podadresářů. Chcete-li zaslat pouze jednotlivé soubory nebo adresáře, určete je příkazem cvs commit soubor1 adresar1. Nové soubory a adresáře musí být do repositáře vloženy příkazem cvs add soubor1 adresar1 dříve, než jsou zaslány na server příkazem cvs commit soubor1 adresar1.

Pokud přejdete k jiné pracovní stanici, proveďte checkout synchronizačního repositáře, pokud jste tak neučinili na této stanici již dříve (viz výše).

Synchronizaci se serverem zahájíte příkazem cvs update. Jednotlivé soubory a adresáře synchronizujete příkazem cvs update soubor1 adresar1. Rozdíly mezi aktuálními lokálními soubory a soubory na serveru získáte příkazem cvs diff nebo cvs diff soubor1 adresar1. Příkaz cvs -nq update použijte, pokud chcete zjistit, jaké soubory budou synchronizací ovlivněny.

Během synchronizace jsou používány následující stavové symboly:

U

Lokální verze byla aktualizována verzí ze serveru. To se týká všech souborů, které jsou na serveru, ale na lokálním systému chyběly.

M

Lokální verze souboru obsahuje oproti serveru změny. Pokud byly změny i na serveru, bylo je možné sloučit s lokálními změnami. Nedošlo ke konfliktu.

P

Byla aktualizována lokální verze. Nepřenesl se celý soubor, ale byl použit tzv. patch (záplata).

C

Lokální verze je v konfliktu s verzí na serveru.

?

Soubor v CVS repositáři neexistuje.

Stav označený písmenem M upozorňuje na lokálně změněný soubor. Buď nahrajte lokální soubor na server nebo lokální soubor odstraňte a proveďte znovu update – chybějící soubor bude nahrán ze serveru. Pokud budete nahrávat lokálně změněný soubor, který byl mezitím změněn ve stejné řádce i na serveru, může dojít ke konfliktu označenému písmenem C.

V takovém případě v souboru vyhledejte konfliktní značky a rozhodněte se mezi verzemi. Je to poměrně nepříjemná práce, takže někdy může být lepší rezignovat na své změny, lokální soubor smazat a pomocí příkazu cvs up nahrát aktuální verzi ze serveru.

27.4.3. Další informace

Zde jsme vám poskytli pouze krátký úvod do možností CVS. Rozsáhlou dokumentaci naleznete na následujících adresách:

http://www.cvshome.org/
http://www.gnu.org/manual/