Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Anmerkung: CVS wird nicht mehr aktiv weiterentwickelt. Die letzte Version stammt aus dem Jahr 2009, die Homepage wird auch nicht mehr aktualisiert. Alternativen sind im Artikel Versionsverwaltung zu finden.
CVS steht für "Concurrent Versions System" und ist ein Programm zur Versionsverwaltung von Daten wie zum Beispiel Konfigurationsdateien, dem Quellcode von Programmen, und so weiter.
CVS wird seit 1989 entwickelt und fußt auf RCS, welches es nach wie vor zur Versionsverwaltung benutzt. Es besitzt somit also eine sehr sichere und stabile Codebasis. In den letzten Jahren hat CVS mit Subversion oder Git zwar starke Konkurrenz erhalten, jedoch hat es immer noch einen sehr guten Ruf unter Programmierern und Administratoren.
Zuerst sollte man sich die Funktionsweise von CVS anschauen. Bei CVS wird eine Art Master-Kopie einer (oder vieler) Datei(en) in einem sogenannten Repository gehalten. Man kann nun die Dateien von diesem Repository laden, sich die Änderungen der Datei anzeigen lassen und diese lokal verändern. Nach dem lokalen Verändern kann man sie wieder in das Repository einfügen und so anderen zugänglich machen.
Zur Installation muss das Paket
cvs
mit apturl
Paketliste zum Kopieren:
sudo apt-get install cvs
sudo aptitude install cvs
installiert [1] werden.
Im Folgenden muss natürlich darauf geachtet werden, dass je nach dem in welchem Verzeichnis man arbeitet, die Befehle als Root ausgeführt werden müssen, damit man Schreibrechte hat! Außerdem sei darauf hingewiesen, dass Root und ein User sich nicht die gleichen Umgebungsvariablen teilen!
Ein Repository zu erstellen ist an sich recht einfach. Zuerst muss man einen Ordner erstellen, wo das Repository liegen soll. Etabliert haben sich dabei entweder /usr/local/cvsroot oder /home/cvsroot. Dies ist jedoch nicht verpflichtend; der Name des Ordners und wo er genau liegt sind beliebig. Man sollte allerdings natürlich darauf achten, dass die Partition, auf der das Repository liegen soll, genügend freien Speicherplatz besitzt.
Nun sollte man, um sich das Leben leichter zu machen, die Umgebungsvariable "CVSROOT" auf den Pfad des Repositorys setzen. Wenn man dies nicht macht, muss man im Folgenden bei den cvs Befehlen immer mit dem Parameter -d PFAD
den Pfad zum Repository extra angeben.
Nun wechselt man in das eben erstellte Verzeichnis für das Repository und führt den Befehl:
cvs init
aus.
Das Repository ist nun erstellt. Dass es geklappt hat, erkennt man daran, dass der obige Befehl keinen Fehler ausgegeben hat. Außerdem befindet sich im oben erstellten Verzeichnis nun ein Unterordner mit dem Namen CVSROOT und in diesem Ordner CVSROOT befinden sich einige Dateien:
/usr/local/cvsroot$ ls
Ausgabe:
CVSROOT /usr/local/cvsroot$ ls CVSROOT/ checkoutlist history postproxy rcsinfo,v checkoutlist,v loginfo postproxy,v taginfo commitinfo loginfo,v posttag taginfo,v commitinfo,v modules posttag,v val-tags config modules,v postwatch verifymsg config,v notify postwatch,v verifymsg,v cvswrappers notify,v preproxy cvswrappers,v postadmin preproxy,v Emptydir postadmin,v rcsinfo
Modul nennt man eine Sammlung von Dateien die zusammen gehören, wie zum Beispiel alle Quellcode-Dateien eines Programmes oder alle Konfigurationsdateien eines bestimmten Programmes. Diese werden innerhalb von CVS dann zu einem Modul zusammengefasst.
Die Syntax zum Einfügen eines Modules in CVS ist abstrakt:
cvs import [Modulname] [Herstellername] [Releasenummer]
Als Modulname sollte immer der Ordner verwendet werden, welcher in CVS eingefügt werden soll. Warum das wichtig ist, sieht man nachher beim Auschecken. Der Herstellername und die Releasenummer sind eher unwichtig. CVS verlangt jedoch deren Eingabe.
Im Folgenden wird nun beispielhaft davon ausgegangen, dass sich die Dateien, die man in CVS einchecken möchte, im Ordner ~/Desktop/meinprojekt befinden:
ls
Ausgabe:
datei1 datei3 datei5 Unterordner1 datei2 datei4 datei6 Unterordner2 ~/Desktop/meinprojekt$ ls Unterordner1/ datei7 datei8 datei9 ~/Desktop/meinprojekt$ ls Unterordner2/ datei10 datei11 datei12
Zuerst muss man in das Verzeichnis wechseln, welches man einfügen möchte:
cd ~/Desktop/meinprojekt
Nun kann man den Ordner inklusive der Dateien und aller Unterordner in CVS einfügen:
~/Desktop/meinprojekt$ cvs import meinprojekt mein_projekt v0-1
Ausgabe:
N meinprojekt/datei6 N meinprojekt/datei4 N meinprojekt/datei1 N meinprojekt/datei5 N meinprojekt/datei3 N meinprojekt/datei2 cvs import: Importing /usr/local/cvsroot/meinprojekt/Unterordner2 cvs import: Importing /usr/local/cvsroot/meinprojekt/Unterordner1 N meinprojekt/Unterordner1/datei1 N meinprojekt/Unterordner1/datei3 N meinprojekt/Unterordner1/datei2 No conflicts created by this import
Nun löscht man den Ordner:
cd ~/Desktop/ rm -r meinprojekt
Und kann ihn schließlich wieder inklusive seines Inhaltes aus dem CVS auschecken mit:
cvs co meinprojekt
Ausgabe:
cvs checkout: Updating meinprojekt U meinprojekt/datei1 U meinprojekt/datei2 U meinprojekt/datei3 U meinprojekt/datei4 U meinprojekt/datei5 U meinprojekt/datei6 cvs checkout: Updating meinprojekt/Unterordner1 U meinprojekt/Unterordner1/datei1 U meinprojekt/Unterordner1/datei2 U meinprojekt/Unterordner1/datei3 cvs checkout: Updating meinprojekt/Unterordner2
Um Daten von einem lokalen Repository zu beziehen reicht es aus den Befehl
cvs -d /pfad/zum/repository co MODULNAME
auszuführen. Den Pfad mittels -d
anzugeben kann man sich sparen, wenn man die Umgebungsvariable "CVSROOT" auf den Pfad gesetzt hat.
Die Dateien werden nun in einem Ordner gespeichert, der den gleichen Namen trägt wie das Modul. Deswegen wurde oben auch gesagt, dass man als Modulnamen immer den Namen des übergeordneten Verzeichnisses wählen soll.
Dateien zu einem Repository hochzuladen geht genauso wie das Herunterladen, nur dass man den Befehl commit
benutzt:
cvs -d REPOSITORY commit DATEI
Zeigt einem an, ob alle Dateien einer lokalen Kopie auf dem neusten Stand des Repositorys sind:
cvs -n update
Zeigt einem die komplette Revisionsgeschichte eines Modules an:
cvs log
Zeigt einem die komplette Revisionsgeschichte einer einzelnen Datei an:
cvs log [DATEINAME]
Introduction to CVS (von der CVS-Meisterin Jennifer Vesperman)
CVS Administration (von der CVS-Meisterin Jennifer Vesperman)
Diese Revision wurde am 6. September 2015 12:43 von aasche erstellt.