Hi!

Heute mal ein bi�chen allgemeines Geschwafel von mir. ;-)

Ich wurde vor ein paar Tagen darauf aufmerksam gemacht: "Wenn Du vorm
Bearbeiten einer Datei schonmal eine Sicherheitskopie angelegt hast,
brauchst Du RCS."

Jetzt wei� ich also, was das geheimnisvolle Kapitel "RCS" in meinem "Unix in
a Nutshell" zu bedeuten hat: RCS ist das "Revision Control System" und
archiviert nach �nderungen an Dateien die Differenzen zwischen verschiedenen
Versionen.

Um RCS zu benutzen, legt man erstmal ein Verzeichnis "RCS" an, und zwar in
dem Verzeichnis, in dem sich die zu bearbeitende Datei befindet. Also wenn
die Datei "/home/martin/bin/foo.sh" ist, dann "mkdir /home/martin/bin/RCS".

Alsdann macht man sich mit zwei Schl�sselfunktionen vertraut: "Check-In" und
"Check-Out" in Form der Befehle "ci" und "co".

Um eine Datei in RCS aufzunehmen, mu� man zun�chst ein "Check-In"
durchf�hren. "ci" hat bl�derweise die Angewohnheit, die eingecheckte Datei
verschwinden zu lassen, also verwenden wir eine Option, die uns die Datei
erh�lt, aber sie auf r/o setzt:

ci -u foo.sh

RCS merkt, da� dies eine Datei ist, die neu in RCS aufgenommen werden soll
und fragt nach einer Beschreibung der Datei:

$ ci -u foo.sh
RCS/foo.sh,v  <--  foo.sh
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> Ein Testscript f�r RCS
>> .
initial revision: 1.1
done

Jetzt ist die Datei in RCS aufgenommen und auf r/o gesetzt worden. Um sie
wieder bearbeiten zu k�nnen, mu� sie nun mit "co" wieder ausgecheckt werden.
"ci" mu� dabei die Option "-l" bekommen, damit ein RCS-Lock auf die Datei
gesetzt wird und sie beim Auschecken auf r/w gesetzt wird:

$ co -l foo.sh
RCS/foo.sh,v  -->  foo.sh
revision 1.1 (locked)
done

Nach dem Editieren kann die Datei dann wieder eingecheckt werden. Da ich
aber der einzige bin, der �berhaupt an dieser Datei herumdoktert, will ich
mir jedoch die Aktion mit r/o und anschlie�endem Auschecken per "co -l"
sparen und fordere gleich beim Einchecken wieder ein RCS-Lock an, indem ich
"ci" die Option "-l" mitgebe:

$ ci -l foo.sh
RCS/foo.sh,v  <--  foo.sh
new revision: 1.2; previous revision: 1.1
enter log message, terminated with single '.' or end of file:
>> Kleine Modifikation vorgenommen
>> .
done

Nach dem Einchecken mit "ci -l" hat die Datei gleich wieder ein RCS-Lock, so
da� ich direkt weitereditieren kann. Mit "ci -l" legt man also gewisserma�en
einen "Schnappschu�" an, zu dem man sp�ter zur�ckkehren kann. 

Man kann das "strict locking" auch abschalten, da bin ich mir aber noch
nicht ganz �ber Vor- und Nachteile im klaren.

Die Differenzen zwischen den verschiedenen Versionen legt RCS in der Datei
RCS/foo.sh,v ab, und sie k�nnen Schritt f�r Schritt nachvollzogen werden. 

Hat man heute z.B. etwas an einem Script gebastelt, kann man sich die letzte
Version davon zur�ckholen, indem man sein RCS-Lock auf die Datei zun�chst
zur�ckgibt und dann eine �ltere Version davon anfordert, also z.B. eine
Version von gestern:

$ rcs -u foo.sh
RCS file: RCS/foo.sh,v
1.2 unlocked
done
$ co -l -d'August 19, 23:59' foo.sh
RCS/foo.sh,v  -->  foo.sh
revision 1.1 (locked)
writable foo.sh exists; remove it? [ny](n): y
done

H�tte man nur anschauen wollen, was man von der letzten eingecheckten bis
zur aktuellen Version, die man z.Z. in Bearbeitung hat, ver�ndert hat, h�tte
man das mit rcsdiff tun k�nnen:

$ rcsdiff foo.sh
===================================================================
RCS file: RCS/foo.sh,v
retrieving revision 1.2
diff -r1.2 foo.sh
2c2
< echo "Hallo Welt!"
---
> echo "Hallo Welt! Ich liebe euch doch alle!"

Oder gezielt zwischen zwei Versionen vergleichen:

$ rcsdiff -r1.1 -r1.2 foo.sh
===================================================================
RCS file: RCS/foo.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -r1.1 -r1.2
2c2
< echo "Hallo"
---
> echo "Hallo Welt!"

Falls sich jemand davon an CVS erinnert f�hlt: Richtig. CVS setzt auf RCS
auf. F�r ernsthafte Softwareentwicklung d�rfte RCS nicht mehr ganz zeitgem��
sein, aber f�r Scripts und Konfigdateien erscheint es mir sehr praktisch.

Unter http://www.cs.purdue.edu/homes/trinkle/RCS/ kann man den
Postscript-Source eines Buchs �ber RCS herunterladen, der in s�mtliche
Aspekte von RCS einf�hrt. 

Danke, da� ihr bis hier durchgehalten habt. 

Ciao,

-martin
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an