RCS
tvorbapodadresare, kam se budou ukladat verze
% mkdir RCS
inicializace souboru soubor.txt + odstrani soubor z aktualniho adresare
% ci -i soubor.txt
vratit zpet z RCS adresare
% co soubor.txt
odhlaseni souboru se zamkem, aby s nim nemohli pracovat i dalsi uzivatele, kdyz delam zmeny
% co -l soubor.txt
po dokonceni zmen jej znovu prihlasime a odemkneme
% ci -u soubor.txt
pokud se nam nekdy nedari soubor prihlasit ci odhlasit, asi jsme nekdy zapomeli na prepinace -l ci -u (pak je postup ve vytvoreni kopie)
% cp soubor.txt soubor.txt.backup
% co -l soubor.txt
% cp soubor.txt.backup soubor.txt
% ci -u soubor.txt
zjisteni rozdilu mezi prihlasenou a odhlasenou verzi
% rcsdiff soubor.txt
zjisteni rozdilu mezi nekolika verzemi
% rcsdiff -r1.49 -r1.50 soubor.txt
vyvolani verze 1.2, ktera by napr. mohla byt v poradku a bez chyb
% co -l -r1.2 soubor.txt
odhaleni vinika, kdo soubor spatne vyeditoval (zjisteni kdo kdy a co delal) + "-v" vypise i konkretni verzi
% rcs2log -v soubor.txt
CVS
CVSuklada soubory do centralniho uloziste, ale uzivatele pracuji vzdy se svou pracovni kopii souboru.
vytvoreni uloziste
% cvs -d /home/cvsroot init
vlozeni
% cvs -d uloziste import modul vyrobce verze
% cvs -d /home/cvsroot import zelenka_mod zelenka ver_0-1
zjednoduseni
% export CVSROOT=/home/cvsroot
- u vzdalenych systemu napr. :ext:martyn@bobina.monstav.com:/home/fotky - pripujuje se pomoci programu uvedenem v promenne $CVS_RSH (napr. "ssh") nebo pomoci "pserver"
vlozeni2
% cvs import zelenka martyn ver_0-1
vytvoreni pracovniho adresare a import modulu
1. vytvorit si svuj pracovni adresar
% mkdir ~/cvs
% cd cvs
2. vytahnout soubor z centralniho uloziste (odhlaseni souboru)
% cvs checkout zelenka_mod
prace v pracovnim adresari
1.aktualizace verzi (synchornizace)
% cd ~/cvs/zelenka_mod
% cvs update
vypis : U ... soubor uspesne aktualizovan
A ... soubor pridan do uloziste, ale jeste nebyl potvrzen (nutne zadat "cvs commit")
R ... soubor odstranen, ale jeste nebyl potvrzen ("cvs commit")
M ... soubor byl upraven v prac. adresari
C ... konflikt mezi kopii v ulozisti a kopii v pracovnim adresari (musi je vyresit sam uzivatel, kdyz udela automaticky tak je "M")
? ... soubor je umisten v pracovnim adresari, ale ne v ulozisti, CVS nevi co s nim
znackovani revizi
oznaciverzi vsechny soubory a soubory v ostatnich podadresarich
% cvs tag tagname
% cvs tag tagname filename
oznac jsen ty, ktere jsou stejne, pokud se v prac. adresari verze lisi od verze v ulozisti zkonci (-c)
% cvs tag -c tagname
% cvs tag release-1-0 src/sample.c
% cvs tag release-1-0
% cvs tag -c release-1-0
jestlize provedeme odhlaseni ci aktualizaci v obvyklem pracovnim adresari, prepise se oznacena verze pres stavajici soubory
% cvs checkout -r tagname
% cvs update -r tagname
pr. % mkdir example-rel-1-0
% cd /cvs/example-rel-1-0
% cvs checkout -r release-1-0
pr.
% cd cvs/example
% cvs update -r release-1-0
provadeni zmen v modulu s CVS
editovata kompilovat muzeme pouze "odhlasene" soubory, pote zmeny protnout do uloziste (zaregistrujeme je neboli prihlasime)
% cvs commit (nutne spustit z mista, ktere je vyse nez soubory, ktere chcete potvrdit)
% cvs commit soubor.txt (promitnou se zmeny pouze u jednoho souboru)
selhat muze v pripade potencialniho konfliktu to se da napravit prikazem (spustit nad ulozistem)
% cvs update
- slucovani souboru (pokud CVS nedokaze upraveny soubor uspesne sloucit s jeho kopii v ulozisti, oznami konflikt. Puvodni verzi ulozi pod nazvem .#soubor.verze v pracovnim adresari a vysledky operace slucovani se ulozi pod puvodnim nazvem souboru)
pridavani souboru a adresaru (plati jak pro soubory tak pro adresar, soubor lze pridat az pote, co CVS zna i adresar)
% cvs add soubor.txt
% cvs commit
odstraneni souboru (pred odstranenim z uloziste je nutne soubor nejdrive smazat (v prac. adresari), CVS soubor neodstrani, jen jej presune v ulozisti do poddadresare s nazvem Attic)
% cvs remove soubor.txt
odstraneni adresare (nejdou odstranit zadnym prikazem, nejdrive je nutne odstranit vsechny soubory v adresari a pak prikazy), priznak -P znamena ze nebude prazdne adresare nacitat
mozneje i odstraneni pomoci rmdir (pozor jestli neobsahuje zalohovane soubory v adresari Attic). Vsichni uzivatele by si pote meli tento adresar taky smazat
% cvs update -P
% cvs checkout -P
tvorba vetvi
mampripad, kdy mam konfiguracni soubory pro stabilni servery (starsi verze) a pak testovaci servery (nejnovejsi verze) chci udelat zmenu ve starsi verzi konfiguraku, ale neovlivnit tak nejnovejsi
% cvs tag -b release-1-0-patches (cvs tag -b znacka-vetve)
cvs/example-rel-1.0% cvs checkout -r release-1-0-patches (cvs checkout -r znacka-vetve) cvs/example% cvs update -r release-1-0-patches (cvs update -r znacka-vetve, prepise obsah aktualniho pracovniho adresare)
slouceni vetvi zpet s hlavnim kmenem
% cvs checkout example (cvs checkout modul)
% cvs update -j release-1-0-patches (cvs update -j znacka-vetve)
nebo v jednom prikazu :
% cvs checkout -j release-1-0-patches example (cvs checkout -j znacka-vetve modul)
zamykani souboru a sledovani
CVSbohuzel neumi zamykat soubory, takze vyvojari tak mohou pracovat na nekolika souborech. CVS napr. umi oznamit kazdou jeho editaci napr. emailem
zapnuti sledovani zvolenych souboru
% cvs watch on (soubory)
zapnuti zasilani zprav ze sledovani (stanu se hlidacem)
% cvs watch add (soubory)
vypnuti sledovani
% cvs watch off (soubory)
zruseni zasilani zprav ze sledovani
% cvs watch remove (soubory)
dalsi moznosti je pomoci :
% cvs watch add -a edit|unedit|commit|all (soubory)
% cvs watch remove -a edit|unedit|commit|all (soubory)
uvolneni pro editaci u sledovanych souboru
% cvs edit
ukonceni uprav u sledovanych souboru
% cvs unedit
nastaveni emailu pro uzivatele je v adresari CVSROOT v ulozisti vlozit soubor "users" a polozky maji tento format
uzivatel:email
martyn:mkudlacek@centrum.cz
zabezpeceni CVS a pripojeni ke vzdalenemu CSV
definiceSSH do $CVS_RSH (puvodne by prenos probihal pres RSH)
% export CVS_RSH="ssh"
definice korenoveho adresare $CVSROOT pres SSH (metoda ext)
da:[[uzivatel]:[heslo]@]hostitel[:[port]]:/cesta_k_ulozisti
:ext:martyn@bobina.monstav.com:/home/cvsroot
pripojeni
% cvs -d :ext:martyn@bobina.monstav.com:/home/cvsroot checkout sample
vytvoreni anonymniho uloziste
-prihlaseni pres SSH je bezpecne, ale neprakticke pro uloziste, ktere chceme verejne nabidnout pro cteni - moznost volby nastroje "pserver" (nutne nainstalovat)
- viz. trik c.36 (server)