27.4. Einführung in CVS

CVS bietet sich zur Synchronisierung 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 Synchronisierung von Daten in anderen Formaten, wie z. B. 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 Dateisynchronisierung ist nur möglich, wenn alle Arbeitsstationen auf denselben Server zugreifen können.

27.4.1. Konfigurieren eines CVS-Servers

Der Server ist der Ort, an dem sich alle gültigen Dateien befinden, einschließlich der neuesten Version jeder Datei. Jede stationäre Arbeitsstation kann als Server benutzt werden. Wünschenswert ist, dass die Daten des CVS-Repository in regelmäßige Backups einbezogen werden.

Beim Konigurieren eines CVS-Servers ist es sinnvoll, Benutzern über SSH Zugang zum Server zu gestatten. Ist auf diesem Server der Benutzer als tux bekannt und sowohl auf dem Server als auch auf dem Client die CVS-Software installiert, müssen auf der Client-Seite die folgenden Umgebungsvariablen gesetzt sein:



CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

Mit dem Befehl cvs init lässt sich der CVS-Server von der Client-Seite aus initialisieren. Das ist nur einmal erforderlich.

Abschließend muss ein Name für die Synchronisierung festgelegt werden. Wählen oder erzeugen Sie auf dem Client ein Verzeichnis, das ausschließlich Dateien enthält, die von CVS verwaltet werden sollen (es darf auch leer sein). Der Name des Verzeichnisses ist auch der Name der Synchronisierung. In diesem Beispiel wird das Verzeichnis synchome genannt. Wechseln Sie in dieses Verzeichnis. Um den Synchronisa­tionsnamen auf synchome zu setzen, geben Sie Folgendes ein:



cvs import synchome tux wilber

Viele Befehle von CVS erfordern einen Kommentar. Zu diesem Zweck startet CVS einen Editor (den in der Umgebungsvariable $EDITOR definierten, ansonsten vi). Den Aufruf des Editors können Sie umgehen, indem Sie den Kommentar bereits in der Befehlszeile eingeben, wie in folgendem Beispiel:



cvs import -m 'Das ist ein Test' synchome tux wilber

27.4.2. Verwenden von CVS

Das Synchronisierungsrepository kann jetzt mit cvs co synchome von allen Hosts gespeichert ("ausgecheckt") werden. Dadurch wird auf dem Client das neue Unterverzeichnis synchome angelegt. Um Ihre Änderungen an den Server zu übermitteln, wechseln Sie in das Verzeichnis synchome (oder eines seiner Unterverzeichnisse) und geben Sie cvs commit ein.

Standardmäßig werden alle Dateien (einschließlich Unterverzeichnisse) an den Server übermittelt. Um nur einzelne Dateien oder Verzeichnisse zu übermitteln, geben Sie diese folgendermaßen an: cvs commit datei1 verzeichnis1. Neue Dateien und Verzeichnisse müssen dem Repository mit einem Befehl, wie cvs add datei1 verzeichnis1, hinzugefügt werden, bevor sie an den Server übermittelt werden. Übermitteln Sie anschließend die neu hinzugefügten Dateien und Verzeichnisse mit cvs commit datei1 verzeichnis1.

Wenn Sie zu einer anderen Arbeitsstation wechseln, speichern Sie das Synchroni­sierungsrepository, falls dies nicht in einer früheren Sitzung an derselben Arbeitsstation erfolgt ist (siehe oben).

Starten Sie die Synchronisierung mit dem Server über cvs update. Aktualisieren Sie einzelne Dateien oder Verzeichnisse, wie in cvs update datei1 verzeichnis1. Den Unterschied zwischen den aktuellen Dateien und den auf dem Server gespeicherten Versionen sehen Sie mithilfe des Befehls cvs diff oder cvs diff datei1 verzeichnis1. Verwenden Sie cvs -nq update, um zu sehen, welche Dateien von einer Aktualisierung betroffen sind.

Hier sind einige der Statussymbole, die während einer Aktualisierung angezeigt werden:

U

Die lokale Version wurde aktualisiert. Dies betrifft alle Dateien, die vom Server bereitgestellt werden und auf dem lokalen System fehlen.

M

Die lokale Version wurde geändert. Falls Änderungen am Server erfolgt sind, war es möglich, die Unterschiede mit der lokalen Kopie zusammenzuführen.

P

Die lokale Version wurde durch einen Patch der Server-Version aktualisiert.

C

Die lokale Datei hat einen Konflikt mit der aktuellen Version im Repository.

?

Die Datei existiert nicht in CVS.

Der Status M kennzeichnet eine lokal geänderte Datei. Entweder übermitteln Sie die lokale Kopie an den Server oder Sie entfernen die lokale Datei und führen die Aktualisierung erneut durch. In diesem Fall wird die fehlende Datei vom Server abgerufen. Wenn von verschiedenen Benutzern die gleiche Datei in derselben Zeile editiert und dann übermittelt wurde, entsteht ein Konflikt, der mit C gekennzeichnet wird.

Beachten Sie in diesem Fall die Konfliktmarkierungen (»> und «<) in der Datei und entscheiden Sie sich für eine der beiden Versionen. Da dies eine ziemlich unangenehme Aufgabe sein kann, könnten Sie sich entscheiden, Ihre Änderungen zu verwerfen, die lokale Datei zu löschen und dann mit der Eingabe cvs up die aktuelle Version vom Server abzurufen.

27.4.3. Weitere Informationen

Dieser Abschnitt gibt nur eine kurze Einführung in die vielen Möglichkeiten von CVS. Ausführliche Dokumentation steht unter den folgenden URLs zur Verfügung:

http://www.cvshome.org/
http://www.gnu.org/manual/