ubuntuusers.de

CVS

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite 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.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

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.

Installation

Zur Installation muss das Paket

  • cvs

Paketliste zum Kopieren:

sudo apt-get install cvs 

Oder mit apturl installieren, Link: apt://cvs

installiert [1] werden.

Repository erstellen

Hinweis:

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 einfügen

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

Daten von einem Repository beziehen

lokal

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.

Hinweis:

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.

remote

Zuerst stellt man SSH als Übertragungsmethode ein:

export CVS_RSH=ssh 

Um ein entferntes Repository auszuchecken benutzt man nun den Befehl:

cvs -d :ext:BENUTZERNAME@SERVER/CVSROOT co MODULNAME 

Meist reicht jedoch auch:

cvs -d :ext:anonymus@SERVER/cvsroot co MODULNAME 

Daten zu einem Repository hochladen

Dateien zu einem Repository hochzuladen geht genauso wie das Herunterladen, nur dass man den Befehl commit benutzt:

cvs -d REPOSITORY commit DATEI 

Nützliche Befehle

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] 

Diese Revision wurde am 6. September 2015 12:43 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Versionsverwaltung, Shell