Main /

CVS Benutzen

CVS Benutzen

/ HomePage / Computer / Software / Programmierung / EntwicklerTools / CVSBenutzen

Kurzanleitung zur Versionsverwaltung CVS

1. Warum CVS?

Versionsverwaltung mit CVS hilft nicht nur, den Überblick über Programme, Skripte und Konfigurationsdateien zu bewahren, sondern ist auch ein sehr wertvolles Tool, um gewisse Dateien auf verschiedenen Rechnern konsistent aktuell zu halten. Hier in Stichworten die wichtigsten Fakten zum Umgang mit CVS:

2.CVS Befehle und Funktionen

2.1 Directory anfänglich ins Repository bringen

Zuerst ins Arbeitsverzeichnis wechseln, also in den Projektordner selbst, nicht in den darüberliegenden!

cvs import -m"Kommentar" cvs-verzeichnisname vendortag releasetag

Der cvs-verzeichnisname ist der Name des Projektes im CVS-Repository. Er kann auch ein Pfad sein, wenn es sich um ein Unterprojekt handelt.

vendortag ist ein Tag der den Versionszweig beschreibt. Er ist beliebig.

releasetag sollte neu und im gesamten Repository noch nicht vorhanden sein - er bezeichnet das importierte Release des Projektes.

Beispiel:

cvs import -m"Erste Version" Adressverwaltung2005 0.1.0 Adr2005_pre_alpha

Nach einem import muß ein checkout erfolgen, damit man mit den Dateien weiterarbeiten kann. Dazu eine Ebene höher gehen, den Projektordner löschen und Checkout vornehmen.

2.2 Checkout (Aus CVS laden)

Um sich ein Projekt zum Bearbeiten zu holen, muß man es auschecken:

cvs checkout cvs-verzeichnisname

checkout funktioniert nur, wenn noch keine Dateien gleichen Namens vorhanden sind. Bevor ein checkout nach einem import im gleichen Verzeichnis funktioniert, müssen demzufolge die alten Dateien erst gelöscht werden.

2.3 Commit (Änderungen ins CVS schreiben)

Hat man seine Änderungen getätigt und möchte sie ins Repository zurückschreiben benutzt man das Kommando commit:

cvs commit -m"kommentar" [Dateiliste]

Sollte -m"..." nicht angegeben worden sein, wird der Standard-Editor geöffnet und man muß einen Kommentar eingeben. IMHO aufwendiger als gleich einen kommentar anzugeben.

Man kann einzelne Dateien durch Leerzeichen getrennt in der Dateiliste angeben. Wird sie weggelassen, werden alle geänderten Dateien ins Repository geschrieben.

2.4 Update (von anderen geänderte Dateien aus CVS holen)

Haben andere Projektmitarbeiter zwischenzeitlich die Sourcen geändert (meist verschlimmbessert winking smiley ), ist die eigene lokale Kopie nicht mehr aktuell. Mit update kann man sie aktualisieren:

cvs update [Dateiliste]

Auch hier kann die Dateiliste weggelassen werden, es werden dann alle relevanten Dateien geholt.

2.5 Add (Neue Datei ins Repository einfügen)

Wird eine neue Datei angelegt die zum Projekt gehört (z.B. eine neue Klasse) muß dies dem Repository mitgeteilt werde, dazu gibt es den Befehl add.

cvs add [-kb] file

wichtig: Für Binärdateien muss die Option -kb verwendet werden!

Die neue Datei wandert nicht gleich ins Repository, sondern erst beim nächsten commit.

3. CVS Client Setup

Variable CVSROOT setzen (z.B. in der /etc/profile):

export CVSROOT=:pserver:samba@192.168.8.100:/mnt/daten/cvs

4. CVS Keywords

Eine Datei, die ins CVS Repository eingecheckt wird, kann Spezielle Keywords enthalten, die durch CVS ersetzt werden. Das Besondere dieser Keywords ist, daß sie in zwei Schreibweisen funktionieren:

$Keyword$ $Keyword: ''von cvs eingefügte Daten'' $

1. wird durch CVS zu 2. ersetzt. Damit dann das Keyword bei späteren Commits noch erkannt wird, wird eben auch die zweite, bereits geparste Schreibweise von CVS akzeptiert. Genial einfach - einfach genial. Die wichtigsten Keywords sind:

$Author$

Name des Users, der die Dateien eingecheckt hat. Wenn CVS auf einem entfernten Server läuft ist es der Name des CVS-Users des Servers, egal wer darauf zugreift. Macht also nur Spaß wenn jeder einen anderen CVS-User benutzt der sinnigerweise genau so heißt wie sein User auf der lokalen Maschine.

$Id$

Ausführliche Versions-Information im Format Dateiname. Version, Datum/Uhrzeit des Eincheckens, User der eingecheckt hat

Beispiel:

$Id: filename.c,v 1.1. 2004/11/09 23:40:56 elsni Exp $

Auch hier gilt das gleiche wie bei $Author$

$Log$

Dieses Tag vermag eine automatische History zu führen, dazu müssen die Eincheckkommentare aber immer schön gepflegt werden (mit -m"Kommentar").

$Header$

Wie $Id$ nur mit vollständigem Pfadnamen

Es gibt noch viel mehr Wissenwertes über CVS, was man alles im Cederqvist Manual nachlesen kann.

4. CVS-Server aufsetzen

Siehe CVS Server setup, dort ist einfach beschrieben wie man so etwas unter Gentoo-Linux aufsetzt.

Falls CVS schon läuft, ist es noch einfacher:

In der /etc/inetd.conf oder in der /etc/xinetd.d/cvspserver nach --allow-root= suchen und noch so einen Eintrag vornehmen, mit einem neuen Ort für das neue Repository. Der --allow-root= Eintrag ist dann doppelt vorhanden.

Repository anlegen:

cvs <repository-pfad> init

Dann CVSROOT auschecken...

cvs checkout CVSROOT

...und die config Datei entsprechend dem obigem Setup-Guide anpassen. Wieder einchecken. Ein paar User mit htpasswd anlegen und hinter jedem User in der /etc/passwd-Datei :cvsuser einfügen.

Jetzt sollten nur die in der /etc/passwd angegebenen User sich einloggen können.

5. Tips'n Tricks

 cvs diff <file>

Liefert als Output immer etwas wie folgt:

 XXXaYYY
 > neu
 XXXaYYY
 < gelöscht

Wobei XXXaYYY Zeilennummern darstellen. Es soll ja Leute geben, die können damit was anfangen, ich finde es meist aus dem Kontext gerissen, ich kann mir auch nie merken, was '>' '<' nun bedeuten. Und das, wo ich cvs täglich einsetze, aber man kann in der ~/.cvsrc folgenden Eintrag machen:

diff -u3 -p

Dann bekommt man zwar einen noch größeren Output, der patch ähnlich ist, aber es ist meist der Kontext zu verstehen, da ein paar Zeilen um die Änderung mit angezeigt werden, desweiteren sind '+' '-' einfach eindeutiger vor den Änderungen und es steht ein paar Zeilen höher drin, welche Funktion eigentlich gemeint war.

6. Siehe auch

7. Links:

Frische Änderungen | Menü editieren
zuletzt geändert am 24.03.2011 10:41 Uhr von Elsni
Edit Page | Page History