CVS-Server einrichten

CVS steht für Concurrent Versions System und bezeichnet ein Versionsmanagementsystem. Da bei Softwareprojekten in der Regel mehrere Personen gleichzeitig am Quellcode und an der Dokumentation arbeiten können, kann es leicht zu Konflikten kommen, da oftmals von mehreren Entwicklern Änderungen an der selben Datei vorgenommen werden. Infolgedessen können mehrer verschiedene Versionen von einer Datei existieren, deren Modifikationen nicht mehr eindeutig nachvollziehbar sind. Ebenfalls können leicht Änderungen verloren gehen. Abhilfe bietet hier der Einsatz eines Versionsmanagementsystems wie zum Beispiel CVS.

Installation

CVS kann von http://www.cvshome.org heruntergeladen werden. Das Programm steht auch als Installations-Package in vielen GNU/Linux-Distributionen zur Verfügung, darunter Debian, Red Hat und SuSE.

Sollten Sie Suse oder RedHat benutzen, ist CVS möglicherweise bereits bei Ihnen installiert. Wenn es in Ihrem Pfad installiert ist, fördert die Eingabe von cvs auf der Befehlszeile folgendes Resultat.

$> cvs
Usage: cvs [cvs-options] command [command-options-and-arguments]
where cvs-options are -q, -n, etc.
(specify --help-options for a list of options)
where command is add, admin, etc.
(specify --help-commands for a list of commands
or --help-synonyms for a list of command synonyms)
where command-options-and-arguments depend on the specific command
(specify -H followed by a command name for command-specific help)
Specify --help to receive this message
The Concurrent Versions System (CVS) is a tool for version control.
For CVS updates and additional information, see
the CVS home page at http://www.cvshome.org/ or
Pascal Molli’s CVS site at http://www.loria.fr/~molli/cvs-index.html

Installation mit Yast (Package-Manager von SuSE )

Wenn Sie die Pro-Version von Suse besitzen, dann können Sie CVS sehr einfach und schnell über das YaST2-Kontrollcenter installieren.

1. DVD/CD in das Laufwerk einlegen und danach das YaST2-Kontrollcenter aufrufen
2. Menüpunkt "Software installieren" aufrufen
3. Nach dem Paket CVS suchen
4. Paket CVS auswählen und installieren
5. Fertig

Installation mit rpm (Package-Manager von Red Hat)

Ein rpm-Package können Sie mit folgendem Befehl installieren.

rpm -Uh cvs-version.rpm

Wenn der Befehl Erfolg hat, sehen Sie keine Ausgabe. Falls Sie Fortschrittsanzeigen mögen, können Sie den Argumenten -v (für »verbose«, den ausführlichen Modus) hinzufügen.

Installation aus dem Sourcecode

Laden Sie die komprimierte .tar-Datei von http://www.cvshome.org herunter, dekomprimieren Sie sie und packen Sie das Archiv aus. Wenn Sie die Quelldateien auch nach der Kompilierung noch bewahren möchten, entpacken Sie die .tar-Datei in das Verzeichnis /usr/src/cvs. Ansonsten können Sie das Dekomprimieren und Auspacken des Archivs in /tmp vornehmen. Als Nächstes wechseln Sie mit cd zum cvs-Verzeichnis, lesen die INSTALL- und die README-Datei und führen dort die Befehle aus. Anfänger sollten automake und autoconf deaktivieren.

Repository

Das CVS-Repository beinhaltet eine komplette Kopie aller Dateien und Verzeichnisse, die durch CVS verwaltet werden. Auf diese Dateien wird niemals direkt zugegriffen, sondern es wird immer mit einer lokalen Kopie der gewünschten Dateien bzw. Verzeichnisse gearbeitet. Das Repository kann entweder lokal oder auf einem entfernten Rechner liegen.

Erstellen eines Repositorys

Ein leeres Repository wird mit dem CVS-Kommando cvs [-d PATH] init angelegt. Dabei kann das Verzeichnis - wo das Repository angelegt wird - mit dem Parameter -d direkt beim Aufruf angegeben oder über die Umgebungsvariable CVSROOT gesetzt werden.

$> cvs -d /home/cvsrepository init

oder

$> export CVSROOT=/home/cvsrepository
$> cvs init


Im dem neu erstellten Verzeichnis wird ein Unterverzeichnis mit dem Namen CVSROOT erstellt. Dieses Verzeichnis enthält interne Verwaltungsdateien von CVS, die nicht manuell geändert werden sollten.

Verzeichnisstruktur nach dem Ausführen von init:

/home
|
+--cvsrepository
  |
  +--CVSROOT

Zugriffsrechte für das Repository vergeben

Aus Sicherheitsgründen sollten Sie eine neue Gruppe mit dem Namen cvs anlegen.

$> groupadd cvs

Nach dem Anlegen der Gruppe muss noch die Gruppenzugehörigkeit und die Zugriffsrechte des Repositorys angepasst werden.

$> cd /home/cvsrepository
$> chgrp -R cvs .
$> chmod 775 CVSROOT


Alle Benutzer mit Zugriff auf das Repository sollten auch in dieser Gruppe sein.

Zugriff für entfernte Clients ermöglichen

Nun wollen wir unseren frisch installierten CVS-Server als Server-Dienst einrichten, um ihn über remote von einem Client aus verwenden zu können. Die üblichste Methode ist pserver.

pserver

Um einen CVS-pserver als Deamon zum Laufen zu bekommen müssen wir unter /etc/xinetd.d/ eine Datei mit dem Namen cvs anlegen, so dass sie folgendermaßen aussieht (Du musst vielleicht die Pfade anpassen!):

service cvspserver
{
  socket_type = stream
  protocol = tcp
  user = root
  wait = no
  disable = no
  server = /usr/bin/cvs
  server_args = -f --allow-root=/home/cvs pserver
}

Hat man mehrere verschiedenen CVS-Repositorys, die über remote verwendet werden sollen, dann sieht server_args so aus (einfach --allow-root für jedes Repository wiederholen):

server_args = -f --allow-root=/home/cvs1 --allow-root=/home/cvs2 pserver

Desweiteren muss in der Datei /etc/services der Port für CVS eingetragen sein.

cvspserver    2401/tcp    # CVS client/server operations
cvspserver    2401/udp    # CVS client/server operations

Danach müssen wir xinetd neu starten.

$> rcxinetd start

CVS-Benutzer anlegen

Nachdem wir den Zugriff für entfernte Clients konfiguriert haben, können wir für die verschiedene Benutzer einen CVS-Account anlegen.

Zugriff erlauben für vorhandene Systembenutzer

Sollen die vorhandenen Systembenutzer Zugriff auf das CVS-Repository bekommen, müssen wir die Benutzer zu der Gruppe cvs hinzufügen.

$> usermod -G cvs benutzer

Neuen Systembenutzer mit CVS-Zugriff anlegen

Wenn wir neue Systembenutzer anlegen wollen, die auch Zugriff auf das CVS-Repository haben sollen, müssen wir den Benutzer beim Anlegen auch zu der Gruppe cvs hinzufügen.

$> useradd -m -g Users -G cvs benutzer

Neuen Systembenutzer mit CVS-Zugriff anlegen, aber ohne Shell-Login

Aus Sicherheitsgründen wollen Sie einen neuen Systembenutzer anlegen, der nur einen Zugriff auf das CVS-Repository bekommt, sich aber nicht über eine Shell an das System anmelden kann.

$> useradd -g Users -G cvs -s /bin/false benutzer