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

  1. eventuell login
  2. Auschecken des Quelltextes in das lokale Arbeitsverzeichnis (normalerweise einmalig)
  3. $ cvs checkout myproject
  4. Bearbeiten des Quelltextes im Editor
  5. Update des Quelltextes in das lokale Arbeitsverzeichnis und evt. Konflikte beseitigen
  6. $ cvs update
  7. Einchecken des Quelltextes ins Repository (auch hier eventuell Konflikte beseitigen)
  8. $ cvs commit -m "Methode xy hinzugefügt"
  9. 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





Letzte Änderung vorgenommen am Sunday, 12-May-2002 17:58:36 CEST
Martin Hense: hense@inf.fu-berlin.de