Wenn Sie den Umgang mit CVS erlernen wollen, um mit einem Projekt zu
arbeiten, das bereits mit CVS verwaltet wird (das heißt, es befindet
sich bereits irgendwo in einem Archiv), dann sollten Sie vielleicht
mit dem Abschnitt Eine Arbeitskopie auschecken fortfahren. Möchten
Sie allerdings existierende Quelltexte unter die Kontrolle von CVS
stellen, ist dies der für Sie passende Abschnitt. Beachten Sie, dass
immer noch davon ausgegangen wird, dass Sie Zugriff auf ein bereits
bestehendes Archiv haben; wenn Sie zuerst eines anlegen müssen, lesen
Sie bitte Kapitel 4.
Ein bestehendes Projekt in CVS zu übernehmen, wird importieren
genannt. Das CVS-Kommando dazu lautet, wie Sie sich sicherlich bereits
gedacht haben,
abgesehen davon, dass es noch ein paar zusätzliche Optionen benötigt
(und an der richtigen Stelle im Dateisystem ausgeführt werden muss),
um korrekt ausgeführt zu werden. Zuerst wechseln Sie in das Hauptverzeichnis
Ihres Projektes:
user@linux ~$
cd myproj
user@linux ~$
ls
README.txt a-subdir/ b-subdir/ hello.c
user@linux ~$
|
Dieses Projekt besteht aus zwei Dateien - README.txt und hello.c - im
Hauptverzeichnis, zuzüglich zwei Unterverzeichnissen -
a-unterverzeichnis und b-unterverzeichnis - und noch einiger weiterer
Dateien in den Unterverzeichnissen, die hier nicht angezeigt werden.
Wenn ein Projekt importiert wird, importiert CVS alles aus der
Verzeichnisstruktur, ausgehend von dem aktuellen Verzeichnis den
ganzen Baum hinab. Daher sollten Sie sich vergewissern, dass sich nur
solche Dateien in den Verzeichnissen befinden, die auch permanenter
Bestandteil des Projektes werden sollen. Jegliche alten
Sicherheitskopien, Schmierdateien und so weiter sollten entfernt
werden.
Die allgemeine Syntax des import-Kommandos ist
user@linux ~$
cvs import -m "log nachr." projname hersteller-marke versions-marke
|
Die Option -m (m = message, Nachricht) spezifiziert eine kurze
Nachricht, die den Import beschreibt. Dies wird dann die erste
Log-Nachricht des gesamten Projektes; jeder nachfolgende Commit wird
ebenfalls eine eigene Log-Nachricht bekommen. Diese Nachrichten sind
verpflichtend; wird die Option -m nicht angegeben, startet CVS
automatisch einen Texteditor (unter Verwendung der Umgebungsvariablen
$EDITOR), damit Sie eine Log-Nachricht eingeben können.
Nachdem die Log-Nachricht abgespeichert wurde, wird der Import weiter
durchgeführt.
Das nächste Argument der Kommandozeile ist der Projektname (hier wird
»myproject« verwendet). Dies ist der Name, anhand dessen ein Checkout
des Projektes aus dem Projektarchiv durchgeführt wird. (Was
tatsächlich passiert ist, dass ein Verzeichnis mit diesem Namen im
Archiv angelegt wird, doch mehr dazu in Kapitel 4). Der nun
auszuwählende Name muss nicht der gleiche wie der des aktuellen
Verzeichnisses sein, obwohl er es in den meisten Fällen wohl sein
wird.
Die Argumente hersteller-marke und versions-marke dienen nur als
Verwaltungsinformationen für CVS. Sie brauchen sich zu diesem
Zeitpunkt nicht darum zu kümmern; es spielt praktisch keine Rolle,
was Sie dafür wählen. In Kapitel 6 werden die seltenen Umstände
beschrieben, unter denen diese relevant sind. Hier werden wir einen
Benutzernamen und start für diese Argumente benutzen.
Wir können nun den Import starten:
user@linux ~$
cvs import -m "initial import into CVS" myproj jrandom start
N myproj/hello.c
N myproj/README.txt cvs import: Importing /usr/local/cvs/myproj/a-subdir N myproj/a-subdir/whatever.c cvs import: Importing /usr/local/cvs/myproj/a-subdir/subsubdir N myproj/a-subdir/subsubdir/fish.c cvs import: Importing /usr/local/cvs/myproj/b-subdir N myproj/b-subdir/random.c
No conflicts created by this import
user@linux ~$
|
Herzlichen Glückwunsch! Wenn Sie dieses oder ein ähnliches Kommando
ausgeführt haben, haben Sie letztendlich etwas ausgeführt, was das
Archiv verändert.
Wenn Sie sich die Ausgabe des Import-Kommandos noch einmal durchlesen,
werden Sie feststellen, dass CVS den Dateinamen einen einzelnen
Buchstaben vorangestellt hat - in diesem Fall N für neue Datei.
Die Verwendung eines einzelnen Buchstabens an der linken Position, um
den Status einer Datei anzuzeigen, ist bei den Ausgaben eines Kommandos von CVS üblich. Wir werden dies auch später bei Checkout und Update sehen.
Sie könnten nun denken, dass Sie, nachdem Sie gerade das Projekt
importiert haben, in den aktuellen Verzeichnissen sofort arbeiten
können. Dies ist jedoch nicht der Fall. Das aktuelle Verzeichnis ist
immer noch keine CVS-Arbeitskopie. Es war die Quelle für das
import-Kommando, richtig, aber es wurde nicht alleine durch die
Tatsache, in CVS importiert worden zu sein, auf magische Art und Weise
in eine Arbeitskopie verwandelt. Um eine Arbeitskopie zu erhalten,
müssen Sie eine aus dem Archiv auschecken.
Zuerst sollten Sie vielleicht jedoch den aktuellen Projektstamm
sichern. Der Grund dafür ist, dass, wenn die Quelltexte einmal im
CVS-Archiv liegen, Sie sich nicht selbst dadurch verwirren sollten,
indem Sie Kopien von Dateien modifizieren, die nicht der
Versionskontrolle unterliegen (und diese Veränderungen daher nicht
Teil der Projekthistorie werden). Sie sollten von nun an alle Ihre
Arbeiten an einer Arbeitskopie vornehmen. Sie sollten jedoch den
gerade importierten Verzeichnisbaum noch nicht entfernen, da Sie noch
nicht überprüft haben, ob das Archiv alle Dateien enthält. Natürlich
können Sie sich dessen zu 99,999 Prozent sicher sein, weil der
import-Befehl ohne Fehler ablief, doch warum etwas riskieren? Paranoia
zahlt sich aus, wie jeder Programmierer weiß. Daher führen Sie etwa
wie folgt aus:
user@linux ~$
ls
README.txt a-subdir/ b-subdir/ hello.c
user@linux ~$
cd ..
user@linux ~$
ls
myproj/
user@linux ~$
mv myproj was_myproj
user@linux ~$
ls
was_myproj/
user@linux ~$
|
So. Die Originaldateien sind noch vorhanden, sind aber durch den Namen
klar als eine veraltete Version erkennbar, sodass sie nicht im Weg
sind, wenn eine richtige Arbeitskopie geholt wird. Nun kann ein
Checkout durchgeführt werden.
|