Bevor überhaupt irgendetwas ausgeführt werden kann, muss CVS der
Ursprungsort des Archivs, auf das zugegriffen werden soll, mitgeteilt
werden. Dies trifft dann nicht mehr zu, wenn schon eine Arbeitskopie
durch einen Checkout geholt wurde - jede Arbeitskopie weiß, aus
welchem Archiv sie stammt, wodurch CVS das Archiv automatisch aus
einer bestimmten Arbeitskopie ableiten kann. Nehmen wir aber dennoch
an, Sie haben noch keine Arbeitskopie und müssen daher CVS explizit
mitteilen, wohin es sich wenden soll. Dies geschieht mit der globalen
Option -d (-d steht für directory, eine Option, für die es eine
historische Begründung gibt, obwohl -r für Repository vielleicht
besser gewesen wäre), gefolgt von dem Pfad zu dem Archiv.
Nehmen wir zum Beispiel an, das Archiv befindet sich auf der lokalen
Maschine in /usr/local/cvs (ein Standardort):
user@linux ~$
cvs -d /usr/local/cvs Kommando
|
In vielen Fällen befindet sich das Archiv jedoch auf einer anderen
Maschine, und es muss daher über das Netzwerk zugegriffen werden. CVS
stellt mehrere Netzwerkzugriffsmethoden zur Verfügung; welche
eingesetzt werden soll, hängt von den Sicherheitsansprüchen des
Archivservers ab (im Folgenden Server genannt). Den Server für
verschiedene Zugriffsmethoden einzurichten, wird in Kapitel 4
beschrieben; an dieser Stelle soll nur der Teil des Clients behandelt
werden.
Glücklicherweise haben alle Netzwerkzugriffsmethoden eine gemeinsame
Aufrufsyntax. Grundsätzlich muss zur Spezifikation eines nicht lokalen
Archivs lediglich ein längerer Pfad zum Archiv angegeben werden.
Zuerst wird die Zugriffsmethode angegeben, zu beiden Seiten mit
Doppelpunkten abgetrennt, gefolgt von dem Benutzernamen und dem
Servernamen (zusammengesetzt mit einem @-Zeichen), einem weiteren
Doppelpunkt als Trenner und letztendlich dem Pfad des
Archivverzeichnisses auf dem Server.
Betrachten wir die pserver-Zugriffsmethode, die für
passwort-authentisierten Server steht:
user@linux ~$
cvs -d :pserver:jrandom@cvs.foobar.com:/usr/local/cvs login
(Logging in to jrandom@cvs.foobar.com) CVS password: (hier das CVS Passwort eingeben)
user@linux ~$
|
Der lange Archivname nach -d sagte CVS, die pserver-Zugriffsmethode
mit dem Benutzernamen jrandom auf dem Server cvs.foobar.com zu
verwenden, der ein CVS-Archiv in /usr/local/cvs hat. Übrigens muss
der Hostname nicht cvs.irgendetwas.com lauten; dies ist eine übliche
Übereinkunft, aber es hätte auch einfach folgendermaßen sein können:
user@linux ~$
cvs -d :pserver:jrandom@fisch.foobar.org:/usr/local/cvs Kommando
|
Das tatsächlich verwendete Kommando war login, das verifiziert, ob Sie
autorisiert
sind, mit dem Archiv zu arbeiten. Das login-Kommando fragt
Sie anschließend nach einem Passwort und kontaktiert dann den Server,
um das Passwort zu verifizieren. Guter Unix-Sitte folgend, hat cvs
login keine Ausgabe, wenn das Login korrekt ablief; wenn es
fehlschlägt, wird eine Fehlermeldung ausgegeben (zum Beispiel weil
das Passwort falsch war).
Man muss sich von seiner lokalen Maschine nur einmal bei einem
bestimmten CVS-Server anmelden. Nach einem erfolgreichen Login
speichert CVS das Passwort in der Datei .cvspass in Ihrem
Home-Directory. Diese Datei wird anschließend immer wieder eingelesen,
wenn auf ein Archiv mit der pserver-Methode zugegriffen wird, wodurch
login nur einmal beim ersten Zugriff auf einen bestimmten CVS-Server
von einer bestimmten Client-Maschine aus durchgeführt werden muss.
Natürlich kann cvs login jederzeit wiederholt werden, wenn sich zum
Beispiel das Passwort geändert hat.
Bemerkung
pserver ist derzeit die einzige Zugriffsmethode, die ein erstes Login
wie dieses benötigt; mit den anderen können direkt normale
CVS-Kommandos ausgeführt werden.
|
Ist einmal die Authentifizierungsinformation in der .cvspass-Datei
gespeichert, können andere CVS-Kommandos in der gleichen
Kommandozeilensyntax ausgeführt werden:
user@linux ~$
cvs -d :pserver:jrandom@cvs.foobar.com:/usr/local/cvs Kommando
|
Die pserver-Methode unter Windows anzuwenden kann einen weiteren
Schritt benötigen. Windows kennt das Unix-Konzept der
Home-Verzeichnisse nicht, weshalb CVS nicht weiß, wo die
cvspass-Datei abgespeichert werden soll. Hierzu muss explizit ein
Verzeichnis angegeben werden. Normalerweise wird das Hauptverzeichnis
der Festplatte C: als Home-Verzeichnis angegeben:
HOME-Verzeichnis
|
C:\WINDOWS> set HOME=C:
C:\WINDOWS> cvs -d :pserver:jrandom@cvs.foobar.com:/usr/local/cvs login
(Logging in to jrandom@cvs.foobar.com)
CVS password: (hier Passwort eingeben)
C:\WINDOWS>
|
Jedes Verzeichnis des Dateisystems ist möglich. Netzwerklaufwerke
sollten jedoch vermieden werden, da der Inhalt der .cvspass-Datei dann
für jeden ersichtlich wäre, der Zugriff auf dieses Laufwerk hat.
Zusätzlich zu pserver unterstützt CVS die ext-Methode (die ein
externes Programm zur Verbindung benutzt, bspw. rsh oder ssh), kserver
(für das Kerberos-Sicherheitssystem Version 4) und gserver (welches
das GSSAPI, oder auch Generic Security Services API, benutzt und auch
Kerberos Version 5 oder größer verwenden kann). Diese Methoden sind
ähnlich wie pserver, haben aber jede für sich ihre Eigenheiten.
Von diesen ist wohl die ext-Methode die üblichste. Wenn Sie sich an
dem Server über rsh oder ssh anmelden können, können Sie die
ext-Methode benutzen. Sie können dies folgendermaßen ausprobieren:
user@linux ~$
rsh -l jrandom cvs.foobar.com
Password hier Ihr Login-Passwort eingeben
|
Angenommen, Sie konnten sich mit rsh erfolgreich bei dem Server ein-
und ausloggen, dann sind Sie nun wieder zurück auf Ihrer
ursprünglichen Client-Maschine:
user@linux ~$
CVS_RSH=rsh; export CVS_RSH
user@linux ~$
cvs -d :ext:jrandom@cvs.foobar.com:/usr/local/cvs Kommando
|
Die erste Zeile setzt (in der Syntax der Unix Bourne-Shell) die
CVS_RSH-Umgebungsvariable auf rsh, was CVS mitteilt, rsh als das
Programm zur Verbindung zu benutzen. Die zweite Zeile kann irgendein
CVS-Kommando sein; Sie werden nach Ihrem Passwort gefragt, sodass CVS
das Login beim Server durchführen kann.
Wenn Sie eine C-Shell anstatt einer Bourne-Shell benutzen, versuchen
Sie Folgendes:
user@linux ~$
setenv CVS_RSH rsh
|
und unter Windows versuchen Sie dies:
c:\WINDOWS
|
C:\WINDOWS> set CVS_RSH=rsh
|
Der Rest dieser Führung verwendet die Bourne-Shell-Syntax; Sie können
dies für Ihre Umgebung bei Bedarf umsetzen.
Um ssh (die Secure-Shell) anstatt von rsh zu benutzen, muss nur die
Umgebungsvariable CVS_RSH entsprechend gesetzt werden:
user@linux ~$
CVS_RSH=ssh; export CVS_RSH
|
Lassen Sie sich nicht davon verwirren, dass die Variable CVS_RSH
heißt, Sie ihren Inhalt aber auf ssh setzen. Es gibt historische
Gründe dafür (die allumfassende Unix-Entschuldigung, ich weiß).
CVS_RSH kann auf ein beliebiges Programm verweisen, welches das Login
auf einer anderen Maschine sowie Kommandos ausführen und deren
Ausgabe empfangen kann. Nach rsh ist ssh wohl das verbreitetste dieser
Programme, obwohl es sicherlich noch andere gibt. Wichtig ist, dass
diese Programme den Datenstrom in keiner Weise verändern dürfen. Dies
disqualifiziert die Windows-NT rsh, weil diese zwischen den Unix- und
DOS-Zeilenumbrüchen konvertiert (oder es zumindest versucht). Sie
müssten sich in diesem Fall eine andere rsh für Windows besorgen oder
eine andere Zugriffsmethode benutzen.
Die gserver- und kserver- Methoden werden nicht so oft wie die anderen
benutzt und werden hier nicht behandelt. Diese sind bezüglich dessen,
was bisher behandelt wurde, recht ähnlich; Näheres findet sich im
Cederqvist.
Verwenden Sie nur ein Archiv und wollen nicht jedes Mal -d repos
eingeben, können Sie einfach die CVSROOT -Umgebungsvariable (die
vielleicht CVSREPOS hätte genannt werden sollen, doch dafür ist es nun
zu spät) wie folgt setzen:
user@linux ~$
CVSROOT=/usr/local/cvs
user@linux ~$
export CVSROOT
user@linux ~$
echo $CVSROOT
/usr/local/cvs
user@linux ~$
|
oder vielleicht
user@linux ~$
CVSROOT=:pserver:jrandom@cvs.foobar.com:/usr/local/cvs
user@linux ~$
export CVSROOT
user@linux ~$
echo $CVSROOT
:pserver:jrandom@cvs.foobar.com:/usr/local/cvs
user@linux ~$
|
Der Rest dieser Führung geht davon aus, dass CVSROOT auf das Archiv
verweist, sodass die Beispiele die -d Option nicht enthalten. Wenn auf
mehrere Archive zugegriffen werden soll, sollte die
CVSROOT -Umgebungsvariable nicht gesetzt werden und anstatt dessen mit
-d repos das benötigte Archiv angegeben werden.
|