Versionskontrolle mit CVS

Um das Praktikum erfolgreich durchzuführen, ist es wichtig, jederzeit nachvollziehen zu können, wer was warum getan hat. Den einfachsten Weg dazu bietet das Werkzeug CVS, das ein einfaches Austauschen und Synchronisieren von Änderungen im Team bietet.

Mit CVS lassen sich nicht nur (Java-)Quelltexte verwalten, sondern beliebige Dokumente. In Textdateien sind parallele Änderungen möglich, die anschließend von CVS zusammengefügt werden. (Wohl dem, der LaTeX als Textverarbeitung benutzt!)

Die Informationen auf dieser Seite beschrät sich auf das SEP-gerechte Einrichten von CVS. Die tatsächliche Benutzung von CVS wird hier beschrieben:

Einrichtung von CVS für die Praktikumsgruppe

CVS benutzt ein Archiv, in dem sämtliche Versionen aller Dokumente abgelegt werden. Sie benötigen genau ein CVS-Archiv pro Team, das als Unterverzeichnis in einem Homeverzeichnis eines Teammitglieds steht - etwa /home/cip/hugo/cvs für den Benutzer hugo.

Der »Besitzer« (hier: hugo) wird gleichzeitig Pfleger des CVS-Archivs - d.h. er oder sie darf CVS erstmalig einrichten (und die folgenden Schritte ausführen).

Das erste Einrichten von CVS geht in wenigen Schritten:

  1. Anlegen des CVS-Archivs ("sauron>" ist die Eingabeaufforderung):
    sauron> mkdir /home/cip/hugo/cvs
  2. Setzen der Umgebungsvariable CVSROOT auf den Pfad des CVS-Archivs:
    sauron> CVSROOT=/home/cip/hugo/cvs; export CVSROOT
  3. Initialisierung das CVS-Archivs:
    sauron> cvs init

Einrichtung eines Projekts in CVS

Nachdem das CVS-Archiv existiert, kann man das erste Projekt unter CVS-Verwaltung stellen - z.B. das Projekt demo 1.0 aus der SEP20-Gruppe. Auch das sollte der CVS-Pfleger tun.

  1. Wechseln Sie in das Hauptverzeichnis des Projektes - etwa $HOME/demo:
    sauron> cd
    sauron> cd demo
  2. Setzen Sie die Umgebungsvariable CVSROOT auf den Pfad des CVS-Archivs:
    sauron> CVSROOT=/home/cip/hugo/cvs; export CVSROOT
  3. Importieren Sie das Projekt:
    sauron> cvs import -m "Import des Demo-Projektes" demo SEP20 DEMO-1-0
    (Liste der Dateien)
    No conflicts created by this import
  4. Das ursprüngliche Hauptverzeichnis des Projektes wird nun nicht mehr benötigt; es sollte durch ein CVS-kontrolliertes Projekt ersetzt werden (siehe übernächster Schritt).

Sicherheitsvorkehrungen

Als Vorgabe ist das CVS-Archiv für alle Mitglieder Ihrer UNIX-Gruppe les- und schreibbar - per Vorgabe sind dies alle Studenten der FMI. Sie könnten zwar sofort loslegen; auf Dauer haben Sie aber ein Sicherheitsproblem.

Wir empfehlen, eine UNIX-Gruppe speziell für Ihr Projekt einrichten zu lassen und das CVS-Archiv so einzurichten, dass es nur in dieser Gruppe les- und schreibbar ist.

Beispiel - Einrichten des CVS-Archivs für die UNIX-Gruppe sep20:

  1. Ändern Sie die Gruppe des CVS-Archivs in sep20:
    sauron> chgrp -R sep20 /home/cip/hugo/cvs
    (-R steht für "rekursiv")
  2. Tragen Sie Sorge dafür, dass die Gruppe sep20 das CVS-Archiv lesen und ändern kann:
    sauron> chmod -R g+rwxs /home/cip/hugo/cvs
    (rwx steht für "read/write/execute", s sorgt dafür, daß neue Verzeichnisse ebenfalls mit Gruppe sep20 angelegt werden.)
  3. Sorgen Sie dafür, dass andere das CVS-Archiv nicht lesen oder ändern können:
    sauron> chmod -R o-rwx /home/cip/hugo/cvs

Richten Sie das Projekt für Gruppenmitglieder ein

Damit alle Gruppenmitglieder im Projekt arbeiten können, muß jede/r eine eigene lokale Kopie des Projektes anlegen - so etwa Gruppenmitglied Sabine:

  1. Setzen Sie die Umgebungsvariable CVSROOT auf den Pfad des CVS-Archivs:
    elron> CVSROOT=/home/cip/hugo/cvs; export CVSROOT
  2. Holen das Projekt aus dem CVS-Archiv:
    sabine> cvs checkout demo
    cvs checkout: Updating demo
    (Liste der Dateien)
Das Setzen von CVSROOT ist für das spätere Arbeiten nicht mehr erforderlich.

Auch der CVS-Pfleger Hugo muss sich, wie oben beschrieben, eine mit CVS kontrollierte Arbeitskopie des Projektes anlegen.

So synchronisieren Sie Ihre Änderungen