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.
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
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:
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.
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.
Byla aktualizována lokální verze. Nepřenesl se celý soubor, ale byl použit tzv. patch (záplata).
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.