CVS (Concurrent Versions System)

Aus THM-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel wurde im WS 2007/08 an der FH Gießen-Friedberg erstellt und beschreibt den Glossareintrag "CVS (Concurrent Versions System)" im Fach MSP.

CVS

Unter einem CVS, einem Concurrent Versions System, versteht man ein Software-System zur Versionsverwaltung von Dateien. CVS wurde ursprünglich als ein reines Kommandozeilen-Tool entwickelt (erste Version 1989), stellt heute jedoch für alle gängigen Betriebssysteme eine grafische Oberfläche zur Verfügung. Beispiele für CVS sind TortoiseCVS und WinCVS für Windows, MacCVS für Macintosh und Cervisia für KDE unter Linux.
CVS ist Open Source, d.h. der Quelltext steht den Entwicklern frei zur Verfügung.
Eine Alternative bzw. neuere Variante zu CVS stellt Subversion dar, auf deren Unterschiede zu CVS in einem weiteren Abschnitt kurz eingegangen wird.


Funktionsweise

Beim CVS werden alle Dateien an einer zentralen Stelle, dem sogenannten Repository (engl. für Behälter), verwaltet. Das Repository enthält ein Verzeichnis für allgemeine Konfigurationsparameter (z.B. Benutzerverwaltung) und jeweils ein Verzeichnis für jedes Projekt. Die einzelnen Dateien erhalten Versionsnummern, sodass Änderungen an diesen leicht ersichtlich sind. Hierzu speichert das Repository zu jeder Datei das so genannte Delta, d.h. den Unterschied zwischen der ursprünglichen Datei und deren neuester Version.

CVS ist eine Art Client-Server-Anwendung, d.h. Benutzer verwenden einen CVS-Client, um auf das vom CVS-Server verwaltete Repository zuzugreifen.

Die Verwendung von CVS hat den Vorteil, dass

  • frühere Versionen eingesehen und wiederhergestellt werden können,
  • die Unterschiede zwischen verschiedenen Versionen aus einem Change-Log ersehen werden,
  • mehrere Programmierer gleichzeitig einen Quelltext bearbeiten können,
  • die Rückverfolgung von Fehlern möglich ist (in welcher Version ist ein Bug aufgetreten?)


Aktionen

Die wesentlichen Aktionen sind das "Auschecken" bzw. "Einchecken" von Dateien. Unter "Auschecken" (von engl. check out) versteht man das Herunterladen des aktuellen Stands aller Dateien eines Projekts aus dem Repository.
Einchecken dagegen bedeutet das Hochladen von Dateien in das Repository. Beim Einchecken hat der Bearbeiter die Möglichkeit, einen Kommentar abzugeben, der es den anderen Beteiligten erleichtert, die Änderung am Projekt nachzuvollziehen. Der Programmierer muss selbst darauf achten, dass seine lokale Kopie immer mit dem Repository übereinstimmt.
Das Zusammenführen von mehreren Änderungen einer Datei bezeichnet man als "Merge".


Unterschiede zu Subversion

CVS erhält verschiedene Versionsnummern für jede einzelne Datei, Subversion dagegen nur für das gesamte Projekt. Die Versionsnummer (auch Revisionsnummer) wird bei Subversion bei jeder Dateiänderung um 1 erhöht, damit ersehen werden kann, dass sich etwas geändert hat.
CVS verwendet eine Lock-per-Datei-Logik, in der immer nur die Datei gesperrt wird, die gerade hochgeladen wird. SVN verwendet im Gegensatz eine Lock-per-Repository-Logik, in der eine Transaktion auf das gesamte Verzeichnis erzeugt wird.


Literatur:

http://www.wikipedia.de (Stichworte: CVS / Subversion)
http://kj.uue.org/papers/cvs-handout.pdf