Es mag sein, dass mal einer von euch einen CVS Server nicht nur benutzen, sondern auch einrichten muss. Die Tutorials im Internet sind sehr bescheiden und gerade die Knackpunkte werden überall ausgelassen.
Dieses Tutorial wird sich der Problematik widmen, wie man einen CVS-Server mit Passwortautentifizierung einrichtet.
Vorerst noch ein Link zu einem anderen Tutorial von SuSE:
http://www.suse.de/de/private/suppor...cvs/index.html
cvs besorgt ihr euch von www.cvshome.org
Das Kompilieren/Installieren folgt den üblichen Regeln: configure && make && make install, schaut euch aber vorher mit configure --help an, ob ihr vielleicht ein paar Spezialeinstellungen wollt.
Client und Server werden standardmäßig kompiliert.
Sinnvoll ist vor allem die Option für den Editor, den CVS öffnen soll, wenn es einen Kommentar beim Einchecken verlangt. Standardmäßig ist das vi oder was sonst so an Steinzeiteditoren bei euch schlummert - damit können die wenigsten umgehen (ich gehöre dazu). Man kann jeden beliebigen Editor eintragen.
Dies kann man auch nachher über die Variable CVSEDITOR beeinflussen.
EDIT:
Wichtig (und möglicherweise neu) ist, dass man bei cvs noch UNBEDINGT ein --prefix=INSTALLPFAD mitgeben muss, sonst wird es nicht richtig installiert, d.h. das Kommando "cvs" ist im System nicht vorhanden. Das configure-script sagt zwar, dass es nach /usr/local installiert, aber das stimmt nicht!
Wer also sichergehen will, kompiliert so (ggf mit weiteren Parametern): configure --prefix=/usr/local && make && make install
Hat mich einige Nerven gekostet bis ich das herausgefunden habe..
/EDIT
Benutzt auf jeden Fall die aktuellste Version. Im Moment ist das 1.11.5. Alle Versionen vorher haben (mindestens) einen Bug so wie diesen:
http://www.heise.de/newsticker/data/pab-21.01.03-000/
Die Versionen bei den Distributionen sind relativ alt und somit davon betroffen.
Das Kompilieren verläuft eigentlich schnell und problemlos.
Jetzt wollen wir die ersten Vorbereitungen treffen; wir legen im System einen User und eine Gruppe an, z.B. cvs und cvsuser. Den cvsadmin nehmen wir auch gleich als Gruppe. Im SuSE-Tutorial (s.o.) stehen die Befehle dafür. Gebt dem User auch gleich /bin/false als Shell, denn er darf nur die cvs-Funktionen benutzen und sich nicht auf eurem System austoben.
Nun erstellen wir das Verzeichnis, in dem die ganzen Daten (das "Repository") liegen sollen (falls noch nicht geschehen) und initialisieren es:
mkdir /srv/cvs/Projekt/
cvs -d :local:/srv/cvs/Projekt/ init
cvs legt ein Verzeichnis (CVSROOT) mit config-Dateien an, durch die das Repository nachher konfiguriert werden kann.
Falls es schon Daten gibt, die direkt ins Repository aufgenommen werden sollen, dann könnt ihr den import Befehl benutzen:
cvs -d :local:/srv/cvs/Projekt/ import -m "initial Import" Modul-Name Hersteller-Name start
-m Gibt einen Kommentar an, den man beliebig wählen kann. Das Verzeichnis, in dem ihr euch jetzt befindet, wird als Modul mit dem Namen Modul-Name ins Repository importiert.
Dahinter könnt ihr euren Namen oder den der Firma schreiben, wie auch immer.
"start" ist das Tag, das alle importierten Dateien bekommen. Ihr könnt also später immer die Dateien in diesem Urzustand auschecken, wenn ihr wollt.
Die Unterverzeichnisse von /srv/cvs/Projekt/ sollten dem Benutzer cvs und der Gruppe cvsgroup gehören, mit Ausnahme des CVSROOT-Verzeichnisses und dessen Inhalt (am besten nur für root freigeben und ja kein Schreibzugriff für andere Leute!)
In diesem Verzeichnis legt man (nicht per cvs sondern direkt per Editor) eine passwd Datei an, die z.B. so aussieht:
guest::cvsuser
Entwickler:VerschlüsseltesPasswort:cvsuser
guest ist hier ein Benutzer, der ohne Passwort auf das Repository zugreifen kann. Damit ihr das Passwort-System damit nicht aushebelt, solltet ihr guest in die Datei readers im CVSROOT eintragen! Dann hat er nur Lesezugriff.
Vergibt man ein Passwort, muss man es sich allerdings selber verschlüsseln cvs liefert kein Tool dazu. Ich hab die Passwortdatei genommen, die für meinen FTP-Server (pureftpd) ist und für cvs zurechtgeschnitten (also alles bis auf Name und Passwort rausgeschmissen). Ich hab von einem Perl-Script gelesen, das das macht (ich weiß aber nicht mehr wo; wenn jemand den Namen oder einen Link zu so einem Tool posten könnte, wäre das der Knaller)
Die Datei config sollte man sich auch anschauen und an eigenen Bedarf anpassen. Dort sollte man dann auch austragen, dass die /etc/passwd für die Anmeldung benutzt werden darf, dazu setzt man
SystemAuth=no
Standardmäßig ist davor noch ein # eingetragen, der muss weg!
Die Datei cvswrappers ist auch wichtig, wenn man binärdaten im Projekt hat, wie z.B. Bilder oder executables:
Man trägt einfach Dateityp und die passenden Optionen ein; hier werden Bilder und Java-Dateien als binär behandelt:
*.gif -k 'b'
*.GIF -k 'b'
*.jpg -k 'b'
*.JPG -k 'b'
*.jpeg -k 'b'
*.JPEG -k 'b'
*.png -k 'b'
*.PNG -k 'b'
*.class -k 'b'
*.jar -k 'b'
Hat man dies erledigt, dann muss man nicht mehr darauf achten, ob eine Datei binär ist oder nicht.
Das ist wichtig, weil es Schlüsselwörter für CVS gibt, die es automatisch ersetzt, wenn sie in Dateien vorkommen, z.B. $Author$ oder (was viel häufiger vorkommt) $Id$.
Wenn in einer Binärdatei nun statt $Id$ irgendein Text steht, den CVS eingesetzt hat, dann kann man sich leicht ausmalen, dass die binary sofort unbrauchbar wird.
Man kann Dateien auch nachträglich mit diesem Schutz versehen. Mehr Infos dazu gibt der cvs admin Befehl.
So, jetzt haben wir den Dateikram erledigt und wollen cvs nun als Server einrichten. Wir bedienen uns da eines Superservers, z.B. dem xinetd. In die /etc/xinetd.conf tragen wir folgendes ein:
service cvspserver
{
socket_type = stream
protocol = tcp
wait = no
user = root
passenv =
server = /usr/bin/cvs
server_args = -f --allow-root=/srv/cvs/Projekt pserver
}
Hat man mehrere CVS Projekte, so sieht server_args so aus (einfach --allow-root für jedes Repository wiederholen):
server_args = -f --allow-root=/srv/cvs/Projekt1 --allow-root=/srv/cvs/Projekt2 pserver
In der /etc/services sollte der Eintrag
cvspserver 2401/tcp
zu finden sein und öffnet diesen Port auch in eurer Firewall
Starten wir den xinetd und versuchen wir uns einzuloggen:
Einloggen geht so:
cvs -d :pserver:Entwickler@www.mein-cvs-server.de:/srv/cvs/Projekt login
oder man exportiert die CVSROOT Variable um sich tipparbeit zu sparen:
export CVSROOT=:pserver:Entwickler@www.cvsserver.de:/srv/cvs/Projekt
dann kann man bei allen weiteren cvs-Kommandos diesen Rattenschwanz weglassen (und schreibt z.B. nur cvs login, cvs update, cvs commit, etc).
Wichtig ist auch die Variable CVSEDITOR. Man sollte sie dringend auf einen Texteditor seiner Wahl setzen (wieder mit export), sonst findet man sich beim commit im vi oder einem ähnlich grauenhaften Editor wieder... (oder man kompiliert direkt ein, welcher Editor benutzt werden soll, s.o.)
Aber das fällt alles eher unter Benutzung von cvs, nicht zum Einrichten des Servers.
=========================================
Folgendes ist absolut optional; eine hübsche Spielerei. Wenn ihr euch nicht in die Quelltexte schauen lassen wollt, dann müsst ihr euren Webserver entsprechend absichern.
Ich gehe sowieso mal davon aus, dass ihr einen lauffähigen http-Server (z.B. apache) am Start habt und ihn auch für cgi-Ausführung eingestellt habt.
Wenn wir unser Repository so schön im Blick haben wollen wie auf sourceforge, dann laden wir uns viewcvs runter (http://viewcvs.sourceforge.net/) und installieren es wie in der INSTALL-Datei von viewcvs beschrieben.
Damit das Programm funktioniert, braucht man Python und RCS. Ohne RCS funktioniert es nicht (es zeigt nur Verzeichnisse an) und die Zeile, in der es als Voraussetzung erwähnt wird, überliest man schonmal sehr leicht.
In der INSTALL und auf der Homepage von viewcvs gibts einen Hyperlink zu RCS (worauf ich im folgenden nicht eingehen will).
Jetzt editieren wir die viewcvs.conf, die mit Kommentaren gespickt ist.
Wo liegt das Repository?
cvs_roots = Name-für_mein_Repository : /srv/cvs/Projekt, Name-für_ein_weiteres_Repository : /srv/cvs/Projekt2
Wo liegt RCS?
rcs_path = /usr/bin/
Dateityperkennung anhand einer mime-type-Datei aktivieren (optional):
mime_types_file = /usr/local/apache2/conf/mime.types
Mailadresse des Admins:
address = Mail an den bösen Admin
Titel für die Webseite auf der das Repository angezeigt wird:
main_title = Mein krasses CVS Repository
Verzeichnisse, die nicht angezeigt werden sollen:
forbidden = CVSROOT
Es gibt noch unzählige weitere Optionen, wie z.B. tarballgenerierung etc. Lest euch die config durch.
Habt ihr alles so gemacht wie hier beschrieben, habt ihr einen CVS-Server, der wie der von Sourceforge funktioniert.
Einen Fragethread gibt es hier:
http://www.linuxforen.de/forums/show...threadid=63038
Lesezeichen