Systém pro zprávu zdrojových textů - RCS

RCS (Revision Control System) je systém pro správu často modifikovaných souborů, např. zdrojových textů či dokumentace. RCS umožňuje řešit problém sdílení zdrojových souborů několika programátory.

Základními příkazy RCS jsou ci(check in) a co (check out).

Řekněme, že modifikujeme soubor foo.txt, který sdílí více programátorů. Příkaz ci uloží obsah souboru foo.txt do archivu s příponou ,v (versons), tj. foo.txt,v, a původní soubor zruší. Pokud chce soubor někdo užívat musí jej vyjmout s archivu příkazem co -l. Příkaz co archiv uzamkne, takže soubor nemůže modifikovat nikdo, kromě uživatele, který jej z archivu vyjmul. Po vložení změněného souboru se zámek zruší. Z archivu je však možné kdykoli získat poslední versi pouze pro čtení, což se hodí v případě zdrojových souborů, které jsou nutné ke kompilaci.

V archivu je uložena celá historie souboru, lze kdykoli zjistit jaké změny byli a kým provedeny. Příkazem co lze z archivu vyjmout libovolnou versi souboru. Archivní soubory se vytvářejí v podadresáři RCS. V případě, že podadresář RCS neexistuje vytvářejí se v aktuálním adresáři.

Tedy postup práce s RCS je následující:

  1. Vytvoříme soubor, např. zmíněný foo.txt
  2. Uložíme danou versi foo.txt do archivu příkazem:
    >  ci  foo.txt
    
    poté jsme RCS vyzváni výzvou >> k zadání popisu daného souboru; popis může být výceřádkový a ukončuje se tečkou, zananou na samostatném řádku.
    foo.txt,v  <--  foo.txt
    enter description, terminated with single '.' or end of file:
    NOTE: This is NOT the log message!
    >> To je dokumentace k foo.c
    >> .
    initial revision: 1.1
    done                       
    
    Při dalším použitím ci se RCS dotazuje na seznam změn v daném souboru.
  3. Uložený soubor můžeme z archivu vyjmout pouze pro čtení:
    > co foo.txt
    foo.txt,v  -->  foo.txt
    revision 1.1
    done  
    
    nebo pro účely další modifikace:
    > co -l foo.txt
    foo.txt,v  -->  foo.txt
    revision 1.1 (locked)
    done        
    

Při každém dalším použití ci se automaticky zvětší číslo verse, tj. z 1.1 na 1.2 atd., v případě potřeby lze číslo verse přiřadit při vkládání souboru do archivu parametrem -r příkazu ci:

> ci -r2.0  foo.txt
foo.txt,v  <--  foo.txt
new revision: 2.0; previous revision: 1.1
enter log message, terminated with single '.' or end of file:
>> Kompletne prenelana dokumentace k foo.c
>> .
done 

Libovolnou versi lze vyjmout z archivu příkazem co s parametrem -r. Například versi 1.1 souboru foo.txt vyjmeme z archyvu takto:\\

> co -r1.1 foo.txt
foo.txt,v  -->  foo.txt
revision 1.1
done                  

Pokud na daném projektu pracuje pouze jeden člověk a pouze chce ukládat jednotlivé verse daného souboru do archivu lze namísto neustálého dvojice příkazů ci foo.txt; co -l foo.txt psát jeden příkaz ci -l foo.txt.

Další užitečnou vlastností RCS je, že přímo v textu lze zobrazovat číslo užívané verse. Stačí někam do textu (nejlépe někde v hlavičce, a v případě zdrojového textu nějakého programovacího jazyka do komentáře) vložit řetězec
$Id$
který příkaz co zkonvertuje na řetězec:
$Id: jméno_souboru verse datum čas autor stav $

Dalšími užitečnými programy pro práci s archivem versí jsou:

rlog
zobrazí popisy rozdílů jednotlivých versí zapsaných autorem při ukládání do archivu příkaze ci
rcsdiff
zobrazí rozdíl právě modifikované verse od poslední uložené verse

Podrobnější informace lze nalézt v manuálových stránkách rcsintro(1), ci(1), co(1), rcs(1), rcsdiff(1), rlog(1), rcsmerge(1) a ident(1)


Michal Kočer
zpet