CVS bietet sich zur Synchronisation an, wenn einzelne Dateien häufig bearbeitet werden und in einem Dateiformat vorliegen wie ASCII-Text oder Programmquelltext. Die Verwendung von CVS für die Synchronisation von Daten in anderen Formaten (zum Beispiel JPEG-Dateien) ist zwar möglich, führt aber schnell zu großen Datenmengen, da jede Variante einer Datei dauerhaft auf dem CVS-Server gespeichert wird. Zudem bleiben in solchen Fällen die meisten Möglichkeiten von CVS ungenutzt. Die Verwendung von CVS zur Dateisynchronisation ist nur dann möglich, wenn alle Arbeitsplatzrechner auf denselben Server zugreifen können.
Der Server ist der Ort, wo alle gültigen Dateien liegen, d. h. insbesondere die aktuelle Version jeder Datei. Als Server kann zum Beispiel ein fest installierter Arbeitsplatzrechner dienen. Wünschenswert ist, dass die Daten des CVS-Servers regelmäßig in ein Backup mit einbezogen werden.
Ein sinnvoller Weg beim Einrichten eines
CVS-Servers ist, dem Benutzer über SSH Zugang
zum Server zu gestatten. So kann zum Beispiel ein fest installierter
Arbeitsplatzrechner als Server dienen. Ist auf diesem Server der Benutzer
als tux bekannt und sowohl auf dem Server als auch auf dem Client
(zum Beispiel Notebook) die CVS-Software
installiert, sollte man auf der Client-Seite dafür Sorge tragen, dass
folgende Umgebungsvariablen gesetzt sind:
CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir
Mit dem Befehl cvs init lässt sich
dann von der Client-Seite aus der CVS-Server
initialisieren (dies muss nur einmal geschehen).
Abschließend muss ein Name
für die Synchronisation festgelegt werden. Wählen oder erzeugen Sie auf
einem Client ein Verzeichnis, das ausschließlich Dateien enthält, die von
CVS verwaltet werden sollen (es kann auch leer sein). Der Name des
Verzeichnisses spielt dabei keine Rolle und soll in diesem Beispiel
synchome sein. Wechseln Sie in dieses Verzeichnis. Um
den Synchronisationsnamen auf synchome zu setzen, gibt
man Folgendes ein:
cvs import synchome tux wilber
Viele Befehle von CVS erfordern einen
Kommentar. Zu diesem Zweck ruft CVS einen Editor
auf (den in der Umgebungsvariable $EDITOR definierten,
ansonsten vi). Den Aufruf des Editors kann man
umgehen, indem man den Kommentar bereits auf der Kommandozeile angibt, wie
zum Beispiel in
cvs import -m 'dies ist ein Test' synchome tux wilber
Ab diesem Zeitpunkt kann das Synchronisationsrepository von beliebigen
Rechnern „ausgecheckt“ werden:
cvs co synchome
Man erhält dadurch ein neues Unterverzeichnis synchome
auf dem Client. Hat man Änderungen durchgeführt, die man an den Server
übermitteln will, so wechselt man in das
synchome-Verzeichnis (oder auch ein
Unterverzeichnis desselben) und gibt den Befehl
cvs commit ein.
Dabei werden standardmäßig alle Dateien, die unterhalb des aktuellen
Verzeichnisses liegen, und zum lokalen CVS
gehören an den Server übermittelt. Will man nur einzelne Dateien oder
Verzeichnisse übermitteln, so muss man diese mit
cvs commit datei1 verzeichnis1
angeben. Neue Dateien oder Verzeichnisse müssen vor der Übermittlung
mit einem Befehl wie
cvs add datei1 verzeichnis1
dem CVS-Repository hinzugefügt werden.
Danach können sie mit
cvs commit datei1 verzeichnis1
übermittelt werden.
Wechselt man nun den Arbeitsplatz, sollte das Synchronisationsrepository ausgecheckt werden, falls dies nicht schon in früheren Sessions am gleichen Arbeitsplatz geschehen ist (siehe oben).
Der Abgleich mit dem Server wird über den Befehl
cvs update
angestoßen. Man kann mit
cvs update datei1 verzeichnis1
auch selektiv Dateien oder Verzeichnisse updaten.
Will man im voraus die Unterschiede zu den auf dem Server gespeicherten
Versionen sehen, so geht dies mit dem Befehl
cvs diff oder explizit mit
cvs diff datei1 verzeichnis1.
Mit cvs -nq update
kann man sich auch anzeigen lassen, welche Dateien von einem
Update betroffen wären.
Bei einem Update werden u. a. folgende Status-Symbole verwendet:
Die lokale Version wurde auf den neuesten Stand gebracht. Dies betrifft alle Dateien, die der Server bereitstellt, die aber nicht lokal existierten.
Die lokale Version wurde modifiziert. Soweit sich diese auf dem Server verändert hat, konnten die Änderungen auch lokal eingepflegt werden.
Die lokale Version wurde mit Hilfe eines Patches auf den aktuellen Stand gebracht.
Die lokale Datei steht in Konflikt mit der aktuellen Version im Repository.
Diese Datei ist nicht im CVS.
Der Status M kennzeichnet Dateien
die lokal geändert wurden. Senden Sie die lokale Version
an den Server oder löschen Sie die lokale Datei und
übernehmen Sie den aktuellen Stand des Servers.
Die fehlende Datei wird dann vom Server geholt.
Wenn von verschiedenen Benutzern die gleiche Datei an derselben Stelle
editiert wurde, entsteht eine Situation, in der CVS nicht entscheiden kann,
welche Version verwendet werden soll. Dieser Fall wird bei einem Update mit
dem Symbol C gekennzeichnet.
In der entsprechenden Datei
werden an den betreffenden Stellen Konfliktmarken (»> und «<)
eingefügt, die manuell editiert werden können. Da dies ziemlich
zeitaufwendig sein kann, entscheiden Sie sich vielleicht, Ihre Änderungen
zu verwerfen, die lokale Datei zu löschen und
cvs up einzugeben, um die aktuelle
Version vom Server zu holen.
Die Möglichkeiten von CVS sind umfangreich und es konnte hier nur ein kleiner Einblick gegeben werden. Weiterführende Dokumentation gibt es unter anderem unter https://www.cvshome.org/ und http://www.gnu.org/manual/.