Zurück: Wettrennen Inhalt: CVS benutzen Weiter: Nachtrag
![]() |
Stolperfallen |
In diesem Kapitel sollen einige übliche Stolperfallen bei der Benutzung von CVS angesprochen werden, die dem Anfänger (aber auch dem Fortgeschrittenen) schwierigkeiten bereiten.
Leider kann mit Bildern und anderen Binärdateien unter CVS nicht ganz
so sorgloß umgegangen werden, wie man dies gerne hätte. Dies liegt daran,
daß CVS einen Mechanismus anbietet, um in ausgecheckten Dateien automatisch
zu vermerken, um welche Version der Datei es sich handelt, wer sie
zuletzt verändert hat und vieles mehr. Dies wird realisiert, indem der
Benutzer in der Datei bestimmte Schlüsselwörter verwendet, die dann von
CVS beim auschecken entsprechend verändert werden. Diese Schlüsselwörter
können in einer Binärdatei natürlich an beliebig blödsinnigen Stellen
zufällig vorkommen. Man muß CVS daher im Falle einer Binärdatei mitteilen,
daß es keine Schlüsselwörter ersetzen soll. Dies geschieht mit dem
Schalter -kb
, ansonsten ändert sich nichts.
kai@fREUNd:~/xpenguins/penguins$ cp walker.xpm neu.xpm kai@fREUNd:~/xpenguins/penguins$ cvs add -kb neu.xpm cvs add: scheduling file `neu.xpm' for addition cvs add: use 'cvs commit' to add this file permanently kai@fREUNd:~/xpenguins/penguins$ cvs ci -m "Ein Bild" neu.xpm RCS file: /home/kai/cvsroot/xpenguins/penguins/neu.xpm,v done Checking in neu.xpm; /home/kai/cvsroot/xpenguins/penguins/neu.xpm,v <-- neu.xpm initial revision: 1.1 done kai@fREUNd:~/xpenguins/penguins$
Wie man vorgeht, wenn man den Schalter -kb
beim
checkin
von Bildern vergißt (was leidlich oft passiert),
ist in der
CVS Online-Doku
beschrieben.
Eine weitere Schwierigkeit, die daraus resultiert, wie CVS Dateien eines Projektes intern abbildet, besteht in der simplen Operation eine Datei zu verschieben, bzw. umzubenennen. Dies ist mit CVS schlicht nicht möglich!
Es gibt jedoch zwei Wege, dieses Problem zu umgehen, die jedoch beide Vor- und Nachteile haben:
cvs rm
löschen und anschließend
per cvs add
unter dem neuen Namen, bzw. an dem neuen Ort wieder
auferstehen lassen. Der Nachteil dieser Methode ist, daß die Änderungen an
dieser Datei nicht mehr an einer Stelle vorliegen: der Teil der Änderungen
vor der Umbenennung/Verschiebung ist unter dem alten Dateinamen einsehbar,
der Teil danach unter dem neuen Dateinamen. Dieser Nachteil kann abgemildert
werden, indem die rm
- und die add
-Operation in
einem ci
in das Repository übertragen und in der zugehörigen
Log-Nachrichtung explizit erwähnt werden.
Da eine Versions-Kontrolle, die keine korrekten Versionen liefert, wenig Sinn macht, sollte die Umbenennung im Repository nur in Ausnahmefällen durchgeführt werden!
Bei Verzeichnissen bestehen die selben Schwierigkeiten, die mit den selben Ausflüchten umgangen werden müssen. Der Unterschied besteht darin, daß der Aufwandsunterschied zwischen den beiden Methoden wesentlich größer wird. Wenn man direkt im Repository arbeitet, kann man einfach wie gewohnt das eine Verzeichnis verschieben, bzw. umbenennen. Wenn man den Repository über die Bruchstelle der Verschiebung/Umbenennung hinweg konsistent halten will, muß man alle Dateieen und Verzeichnisse, die sich in dem Verzeichniss befindent einzeln löschen und wieder einfügen! Man sollte bei CVS also bei Beginn eines Projektes genau überlegen, wie die Verzeichnisstruktur aussehen soll. Dies ist leider oft nicht möglich!
Weiterhin verwirrend in diesem Zusammenhang ist, daß sich Verzeichnisse
unter CVS eigentlich gar nicht löschen lassen! Damit man trotzdem nicht
alle ehemaligen Unterverzeichnisse in seiner Arbeitskopie herumfliegen hat,
holt CVS Verzeichnisse bei einem update
nicht automatisch.
Man muß es mit up -d
explizit dazu auffordern! Auf diese Weise
werden gelöschte Verzeichnisse nicht bei jedem update
neu
erzeugt. Der Nachteil dabei ist, daß man schnell mal vergißt,
-d
mit anzugeben, wenn es eigentlich nötig wäre, nämlich wenn
dem Repository ein neues Verzeichnis hinzugefüg wurde!
Zurück: Wettrennen Inhalt: CVS benutzen Weiter: Nachtrag