2007
Versionskontrolle mit CVS
CVS ist das “Concurrent Version Management”, ein mächtiges Werkzeugs für Versionsmanagement und kooperativer Programmentwicklung. Es erlaubt das gemeinsame Editieren von beliebigen ASCII-Dateien (eingeschränkt auch BIN-Dateien)
Mehrere Entwickler können gleichzeitig von beliebigen Standorten an einem Projekt arbeiten. Die Sourcen werden zentral im sogenannten Repository verwaltet, jeder Entwickler arbeitet mit einer lokalen Kopie.
Es steht dem Nutzer frei, wann und wie er seinen Stand dem Serverstand angleicht, und wann er seine veränderten Dateien dem Repository zufügt.
Innerhalb des Repositorys können mehrere Dateien zu Modulen zusammengefasst werden. Will man eines dieser Module bearbeiten, so muß man zunächst einen “checkout” machen, der eine lokale Kopie anlegt.
Es gibt die Möglichkeit, mehrere Zweige (Branches) zu benutzen. So können z.B. zwei verschiedene Ansätze verfolgt werden. Sollen diese wieder zusammengefügt werden, ist dies durch einen “Merge” möglich. Durch einen zusätzlichen Parameter beim “checkout” kann man einen bestimmten Branch erhalten.
Obwohl die eigentliche Heimat von CVS die Unix-Welt ist, gibt es inzwischen auch eine Windows-Version unter GPL. Durch die Ersetzung des Kommandozeileninterfaces des eigentlichen CVS durch eine Menüoberfläche läßt es sich hier einfacher nutzen. Leider ist die Konfiguration etwas aufwendig .
Zunächt muß man dem WinCVS mitteilen, auf welches Repository man zugreift. Ein Repository kann im Filesystem liegen, aber auch über verschiedenen Arten remote angesprochen werden. Bei CVS wird es durch die Variable CVSROOT definiert.
Im Normalfall handelt es sich um ein entferntes Repository, dass mit der Methode “pserver” angesprochen wird. Hier meldet man sich am CVS-Server mit dem Nutzernamen “XXX” Projekt und Passwd an. Die Methode “pserver” ist der Standard im Internet, er impliziert eine Passwortauthentifikation.
Falls man hinter einem Firewall arbeitet, kann der HTTP Proxy für den Zugriff auf dem CVS-Server eingesetzt werden. (bei direkter Verbindung kann auch das SSH Protokoll verwendet werden)
Der erste initialen “checkout”, der eine Kopie des aktuellen PROJEKTS anlegt.
[Create] [checkout module]-”XXX” im Menü, das entspricht dem Befehl “CVS checkout XXX”
Auf der lokalen Kopie kann nun wie gewohnt mit einem Editor oder einer Entwicklungsumgebung gearbeitet werden.
CVS Befehlsübersicht
Befehl und dessen Wirkung
Mit dem Menu-Befehl [Trace][Release Selection] kann man einen Release eines Moduls erstellen. Ein Release ist eine Version ohne jegliche CVS-Informationen, der zur Produktion eingesetzt werden kann.
Neue Datei anlegen und zufügen:
[Modify][add Selection] unter WinCVS, “CVS add dateiname” in der Kommandozeilenvariante.
Vorhandenes lokales Modul aktualisieren :
Rechte Maustaste-”update selection” in der Windows-Variante, sonst “CVS update dateiname”.
Was ist seit meinem letzten checkout/update/commit passiert?
Rechte Maustaste-”diff selection”, sonst “CVS diff dateiname”.
Wie ein Konflikt entsteht: Man versucht eine veränderte Datei zu commiten, die in der Zwischenzeit bereits von jemand anders bearbeitet wurde – und das in den gleichen Zeilen. Diesen Konflikt kann CVS nicht mehr selbsttätig lösen, als gibt es eine Konflikt-Meldung aus. In der Windowsvariante erhält diese Datei das Tag “C” für “Conflict”, und sie enthält – mit einigen automatisch generierten Kommentaren – beide Versionen. Das Tag und den Status “Conflict” verliert diese Datei erst, wenn sie bearbeitet und neu commitet, also zum Repository zugefügt wurde.
Um mit CVS effektiv zu arbeiten sollten einige Regeln und Guidelines aufgestellt und beachtet werden.
TIP: Java bietet eine ganze Reihe sinnvoller Coding Guides.Was kann CVS?
CVS-Vorteile!
CVS-Nachteile!

