Freie Universität Berlin · Institut für Informatik
Softwarepraktikum · SoSe 2002
Dozent: Ulrich Kortenkamp
Andrea Wiese und Daria Schymura · 29. April 2002
CVS
Wozu?
CVS (Concurrent Version System) ist ein Programm, mit dem man Quelltexte
so verwalten kann, daß jede Version erhalten bleibt. Dadurch kann man
den Quelltext zu einem beliebigen Stand des Projekts rekonstruieren (zum
Beispiel zur Fehlersuche). Außerdem können problemlos mehrere
Leute zeitlich und räumlich unabhängig am gleichen Code arbeiten
und CVS sorgt dafür, daß die Änderung zusammengefügt
werden.
Wie?
- Repository - CVS verwendet ein zentrales Repository (engl. Behälter).
Dort gibt es für jedes Projekt ein Verzeichnis, in dem die "master copy"
der Daten liegt. Es werden nicht jedesmal die kompletten Dateien gespeichert,
sondern die Änderungen (siehe diff) Pro Datei werden eine Revisionsnummer
und das Datum des Einchecken (commit) gespeichert.
- checkout <module>
Möchte ein Programmierer den Code editieren, fordert er eine working
copy (Verzeichnisbaum des Projekts, der alle zugehörigen Dateien enthält)
an. Diese Kopie kann er verändern, wie er möchte. - commit
[-m <"log message">] [<file(s)>]
Die Änderung werden im Repository gespeichert. Man muß eine log
message angeben. - update [<file(s)>]
CVS aktualisiert die eigene working copy. - Konflikt - Tritt auf, wenn
zwei Leute Änderungen an derselben Stelle im Code vorgenommen haben.
Muß manuell behoben werden.
- diff <file(s)>
Zeigt Änderungen zwischen den Dateien in der working copy und im Repository
an (im Code). - log <file>
Zeigt die Kommentare zu allen Revisionen dieser Datei an. - status
[<file(s)>]
zeigt den Status einer Datei an (zum Beispiel up-to-date, locally modified/added/removed,
Needs Checkout/Patch/Merge, Conflict, Unknown) - add [-m <"comments">]
<file(s)>
Neue Dateien werden hinzugefügt. Achtung: Die Dateien werden erst mit
dem nächsten commit wirklich ins Repository kopiert. - remove
<file(s)>
Datei muß vor diesem Befehl aus dem Arbeitsverzeichnis gelöscht
werden. Wie bei add wird erst beim nächsten commit die Datei aus dem
Repository genommen.
Befehl (allgemein)
cvs [global options] command [command options] [args]
Beispielsession
- eventuell login
- Auschecken des Quelltextes in das lokale Arbeitsverzeichnis (normalerweise
einmalig)
$ cvs checkout myproject - Bearbeiten des Quelltextes im Editor
- Update des Quelltextes in das lokale Arbeitsverzeichnis und evt. Konflikte
beseitigen
$ cvs update - Einchecken des Quelltextes ins Repository (auch
hier eventuell Konflikte beseitigen)
$ cvs commit -m "Methode xy hinzugefügt" - und wieder
zu 3.
Links
CVS Homepage:
http://www.cvshome.org/
Ein sehr verständliches, ausführliches Manual, für alle, denen
unsere Erklärungen nicht genügt haben:
http://cvsbook.red-bean.com/cvsbook.html
Das Standardmanual, bekannt als der Cederqvist (für Leute, die alles
ganz, ganz genau wissen wollen):
http://www.cvshome.org/docs/manual/
Wir empfehlen euch eine Kurzeinführung in CVS (auf deutsch) aus dem
SWP vom letzten Jahr:
http://www.inf.fu-berlin.de/lehre/SS01/swp/A/Termine/cvs.html