Einführung in die Verwendung von CVS

Transcrição

Einführung in die Verwendung von CVS
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
Einführung in die Verwendung von CVS
Inhalt
Einführung in die Verwendung von CVS ............................................................................................. 1
Inhalt................................................................................................................................................... 1
1. Was ist CVS? ................................................................................................................................. 1
2. Funktionsweise von CVS .............................................................................................................. 2
2.1 Checkout .................................................................................................................................. 2
2.2 Commit .................................................................................................................................... 2
2.3 Update...................................................................................................................................... 3
2.4 Add........................................................................................................................................... 3
2.5 Remove .................................................................................................................................... 3
3. Installation von CVS ..................................................................................................................... 3
3.1 Lokales CVS-Repository verwenden...................................................................................... 4
3.2 Externes CVS-Repository verwenden .................................................................................... 4
3.3 CVS-Verwendung mittels CVS-Server .................................................................................. 7
4. Verwendung von CVS in der Shell............................................................................................... 7
5. Arbeiten mit graphischen CVS-Client .......................................................................................... 9
6. Arbeiten mit CVS im SOPRA..................................................................................................... 11
6.1 Im Macintosh-Arbeitsraum ................................................................................................... 12
6.2 Zu Hause ................................................................................................................................ 12
Anhang ............................................................................................................................................. 12
Skript für die Installation von schlüsselauthentisierter ssh-Verbindung ................................... 12
Referenzen ....................................................................................................................................... 13
1. Was ist CVS?
Das Concurrent Versioning System (CVS) ist ein frei verfügbares Versionierungssystem [cvs03],
welches für die unterschiedlichsten Plattformen verfügbar ist und teilweise auch ein
Konfigurationsmanagement ermöglicht - d.h. das Verwalten von Teilen von Software ist so
möglich, dass diese zu beliebigen Releases [glinz02, Kapitel 11] zusammengesetzt werden
können.
CVS vereinfacht und erleichtert sehr die Arbeit, welche bei der Entwicklung von Software
anfällt, indem es
ß hilft die verwalteten Teile zu strukturieren.
ß
hilft Versionierung zu betreiben und automatisch Versionsnummern für jedes Dokument
(Datei) führt.
ß
Mehrbenutzerbetrieb relativ komfortabel unterstützt.
ß
Hilft Releases auf einfache Weise zusammen zu stellen.
IntroCVS.doc
-1-
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
Eine Einführung ist zudem unter [blandy03] zu finden. Eine komplette Dokumentation findet sich
unter [ceder03].
2. Funktionsweise von CVS
CVS verwendet ein sogenanntes zentrales Repository [ceder03] zur Ablage der einzelnen
Versionen der Softwareteile (oder auch Dokumente oder Dateien genannt). Diese einzelne
Dateien werden im Repository so verwaltet, dass verschiedene Benutzer zu jeder Zeit auf alle
vergangenen und aktuellen Versionen der Software Zugriff haben.
CVS wird vor allem für Textdateien, d.h. Source-Code-Dateien und Ähnliches verwendet. Es ist
jedoch auch möglich binäre Dateien (d.h. Dateien, die nicht direkt mit einem Texteditor angezeigt
werden können) mit CVS zu verwalten.
2.1 Checkout
Um den aktuellen Release einer Software (d.h. alle neuesten Versionen der einzelnen
Softwareteile) zu erhalten, lädt der Benutzer die aktuellen Versionen in eine lokale Arbeitskopie.
Wird dies das erste Mal gemacht, so nennt man dies einen sogenannten Checkout. Dabei werden
alle Dokumente in der aktuellen Versionen auf dem lokalen Computer in einem bestimmten
Verzeichnis abgelegt. Alle Daten über die (lokal) herausgeladenen Dateien (Metadaten) werden
in Unterverzeichnissen mit dem Namen CVS gespeichert.
2.2 Edit / Unedit
Mittels Edit wird eine Datei für Änderungen vorbereitet. Dies geschieht, indem im Repository
geschaut wird, ob die Datei gesperrt ist für die Änderung (lock). Falls dies nicht so ist, so wird
der Schreibschutz von der Datei entfernt und der Benutzer kann entsprechend Änderungen in der
Datei vornehmen. Dateien, welche nicht mittels dem Edit-Befehl editierbar gemacht werden sind
schreibgeschützt.
Falls Änderungen an einer editierten Datei rückgängig gemacht werden sollen, so kann mittels
Unedit die letzte aktuelle Version aus dem Repository geholt werden. Diese Version überschreibt
die lokalen Änderungen.
2.2 Commit
Der Benutzer kann die einzelnen Softwaredokumente verändern und nach getaner Arbeit wieder
im Repository ablegen. Dies geschieht durch ein sogenanntes Commit, wobei der Benutzer eine
Beschreibung mit im Repository ablegt, welche Änderungen am Dokument vorgenommen
wurden. Beim Ablegen wird automatisch durch CVS der Versionszähler erhöht und in die
Konfiguration des aktuellen Releases, die neue Dokumentenversion hinzugefügt.
Falls die Datei in der Zwischenzeit bereits durch einen anderen Benutzer im Repository verändert
wurde, so versucht CVS bei Text-Dateien die geänderte Repository Version mit der lokalen
Version automatisch zusammenzuführen. Falls dies nicht gelingt, so wird eine Meldung
ausgegeben und der Benutzer hat den Konflikt manuell zu lösen. Der Konflikt wird innerhalb der
betroffenen Textdatei durch Hervorhebung angezeigt.
Bei Binärdateien wird keine automatische Zusammenführung gemacht. Hier hat der Benutzer
direkt zu entscheiden, welche Datei (die lokal veränderte oder die veränderte Datei im
Repository) gültig ist und welche nicht.
IntroCVS.doc
-2-
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
2.3 Update
Um die lokale Arbeitskopie des Repositories auf dem aktuellen Stand (d.h. auf dem aktuellen
Release) zu halten, ist es nötig von Zeit zu Zeit ein sogenanntes Update zu machen. Dabei werden
aus dem Repository alle Dokumente in der aktuellsten Version geholt und die lokalen Kopien
ersetzt. Exisitiert eine lokale Kopie, die verändert wurde, so wird wie beim Commit versucht
Zusammenzuführen.
Ein Update sollte man immer vor dem Beginn einer neuen Modifikation an einem Dokument
durchführen, damit sicher die aktuellste Version eines Dokumentes für die Änderungen
verwendet wird.
2.4 Add
Um neue Dateien im Repository hinzuzufügen, existiert der Befehl Add. Dieser Befehl fügt ein
neues Dokument dem Repository hinzu. Dazu wird eine neue Datei angelegt, oder in die
Verzeichnisstruktur der lokalen Kopie des Repositories kopiert und/oder verändert.
Anschliessend kann die Datei mittels Add dem Repository hinzugefügt werden. Das eigentliche
Hinzufügen der neuen Datei erfolgt erst, wenn das nächste Commit ausgeführt wird.
2.5 Remove
Mit dem Befehl Remove können Dateien aus dem Repository entfernt werden. Die lokalen
Kopien der Dateien, die aus dem Repository entfernt werden sollen, müssen zuerst gelöscht
werden. Anschliessend kann der Befehl Remove angewendet werden.
3. Installation von CVS
CVS kann auf unterschiedliche Art auf ein zentrales Repository zugreifen. Im Nachfolgenden
werden hauptsächlich zwei mögliche Arten behandelt.
Um auf ein CVS Repository zuzugreifen, müssen im Wesentlichen folgende Angaben gemacht
werden:
Angabe
CVSROOT
CVS_SERVER
CVS_RSH
IntroCVS.doc
Beschreibung
Diese Angabe beschreibt, wo das Repository liegt, d.h. ob es lokal
erreichbar ist oder irgenwo auf einem externen Rechner liegt. Wenn das
Repository irgenwo extern liegt, so ist anzugeben, auf welchem Server und
mit welchem Benutzer auf dieses Repository zugegriffen werden kann.
Ausserdem muss die Pfadangabe erfolgen, wo im Dateisystem des Servers
das Repository zu finden ist.
Diese Angabe bezeichnet mit welchem Tool auf das CVS – Repository
zugegriffen wird. In der Regel ist dies das CVS-Programm, welches als
binäre, ausführbare Datei auf dem Computer liegt, auf welchem auch das
Repository liegt.
Diese Angabe bezeichnet die verwendete Verbindungsart zum Repository,
falls dieses nicht lokal liegt. Wir werden hier im Fall von externen
Repositories im Nachfolgenden die Verbindungsart ssh verwenden.
-3-
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
Um CVS zu betreiben, muss auf dem lokalen Computer ein CVS kompatibles Programm
installiert sein. Wird extern auf das Repository zugegriffen, so muss auf dem entfernten
Computer ebefalls ein CVS kompatibles Programm verfügbar sein.
Normalerweise sollte mindestens das Kommandozeilen-Werkzeug CVS installiert sein. Dieses
kann gefunden werden in [cvs03].
3.1 Lokales CVS-Repository verwenden
Ein Repository gilt als lokal, wenn es über eine lokale Laufwerksangabe erreichbar ist. Dies ist
der Fall, wenn entweder das Laufwerk ein physisch lokales Laufwerk ist (z.B. die Festplatte des
lokalen Computers) oder wenn dies ein Laufwerk ist, welches über das Netzwerk wie ein
physisch lokales Laufwerk eingebunden wurde (die Netzwerkverbindung ist für den Benutzer
transparent). Um ein lokales CVS-Repository anzusprechen müssen folgende Angaben gemacht
werden:
CVSROOT=:local:<localdir>
Diese Angabe muss für die Verwendung von CVS in einer Shell als Umgebungsvariable gesetzt
werden, bzw. bei der Verwendung eines graphischen Clienten angegeben werden. Hierbei muss
<localdir> durch die Pfadangaben ersetzt werden, in welchem das Repository abgelegt ist. Falls
das Repository über den Pfad /Volumes/gorgo.ifi.unizh.ch/cvs/sopra erreichbar ist, so muss
CVSROOT gleich dem Wert :local:/Volumes/gorgo.ifi.unizh.ch/cvs/sopra sein.
Die restlichen Angaben die oben stehen (CVS_RSH und CVS_SERVER) müssen für den lokalen
Betrieb eines Repositories nicht angegeben werden.
3.2 Externes CVS-Repository verwenden
Um ein externes CVS-Repository anzusprechen sind zwei Dinge nötig:
1. Die Angaben, die dem CVS-Programm sagen wie und wo auf das Repository
zuzugreifen ist.
2. Eine schlüsselauthentisierte Verbindung mit Secure Shell zum Server. Dies ist nötig,
damit keine Passwort-Abfragen mehr getätigt werden müssen. Ansonsten funktionieren
viele Werkzeuge, welche CVS verwenden, nicht richtig.
3.2.1 Angaben für CVS
Um auf ein externes CVS Repository zuzugreifen sind folgende Angaben nötig:
CVSROOT=:ext:<username>@<servername>:<repository path>
CVS_RSH=ssh
CVS_SERVER=<Pfad zum CVS-Kommandozeilenprogramm>
EDITOR=<editor name>
CVSROOT muss die Angaben zum Benutzernamen (<username>) enthalten, mit welchem auf
das Repository zugegriffen wird. Der Servername (<servername>) bezeichnet den Server, auf
welchem das Repository liegt. <repository path> bezeichnet den Pfad zum Repository auf dem
Server. Beipsielsweise, wenn auf ein Repository des Benutzers sopra177 zugegriffen wird,
IntroCVS.doc
-4-
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
welches auf dem Server gorgo.ifi.unizh.ch im Verzeichnis /export/home/sopra177 liegt, so ist
CVSROOT wie folgt zu setzen:
CVSROOT=:ext:[email protected]:/export/home/sopra177
CVS_RSH bezeichnet die Art wie zugegriffen wird, in diesem Fall über Secure Shell (ssh).
CVS_SERVER bezeichnet das Verzeichnis und den Dateinamen (unter Unix zumeist
/usr/bin/cvs), in welchem das CVS-Kommandozeileprogramm (herunterladbar unter [cvs03]) auf
dem Server zu finden ist. Ist beispielsweise das CVS-Programm auf dem Server im Verzeichnis
/usr/bin/ zu finden, so muss als Angabe folgendes gemacht werden:
CVS_SERVER=/usr/bin/cvs
EDITOR bezeichnet den Namen eines Editors, welcher aufgerufen wird, falls eine Nachricht
Versionsbeschreibung (Nachricht geschrieben werden muss). Ist dies z.B. der Editor pico, so
muss folgendes angegeben werden:
EDITOR=pico
Diese Angaben können auf unterschiedlichste Art und Weise CVS mitgeteilt werden.
1. Wird eine graphische Oberfläche benutzt, so können meistens diese Angaben konfiguriert
werden. Dies ist der Falls bei WinCVS oder MacCVS (siehe [cvsgui03]).
2. Wird CVS in einer Shell verwendet, so sind die entsprechenden Angaben als
Umgebungsvariablen zu setzen. Unter Unix-TC-Shell sehen die Angaben beispielsweise
wie folgt aus:
setenv CVSROOT „:ext:[email protected]:/export/home/sopra177“
setenv CVS_RSH „ssh“
setenv CVS_SERVER „/usr/bin/cvs“
setenv EDITOR „pico“
Diese Zeilen können in der .tcshrc Datei untergebracht werden, damit diese Variablen
automatisch beim Aufruf der TC-Shell gesetzt werden.
Für die Bash-Shell bzw. .bashrc sehen die Zeilen wie folgt aus:
export CVSROOT=:ext:[email protected]:/export/home/sopra177
export CVS_RSH=ssh
export CVS_SERVER=/usr/bin/cvs
export EDITOR=pico
3. Die genannten Angaben können auch direkt dem CVS-Programm in der Shell über
Kommandozeilenparameter übergeben werden. Dazu konsultieren Sie die Dokumentation
von CVS ([ceder03]).
IntroCVS.doc
-5-
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
3.2.2 Einrichten einer schlüsselauthentisierten ssh-Verbindung
Um eine schlüsselauthentisierte ssh-Verbindung zu erstellen, muss wie folgt vorgegangen
werden:
1. Installation eines OpenSSH Clients, sofern noch keiner installiert ist. Unter Unix ist ein
solcher Client meistens bereits vorhanden. Windows-Benutzer können einen solchen
beziehen unter [openssh03]
2. Es muss ein Public/Private-Schlüsselpaar auf dem Client erstellt werden.
3. Der Public-Schlüssel muss auf den Server kopiert werden.
4. Auf dem Client und dem Server müssen die entsprechenden Einstellungen gemacht
werden
Um die schlüsselauthentisierte ssh-Verbindung einzurichten, können Sie die Abschnitte 3.2.2.1 –
3.2.2.3 durcharbeiten, oder Sie können das Unix-Skript im Anhang für die Installation
verwenden.
Die dargestellten Arten sind für die Verwendung unter Unix gedacht. Unter Windows ist die
Installation ähnlich. Bitte konsultieren Sie dazu die Installationsanleitung Ihrer OpenSSHDistribution.
3.2.2.1 Schlüsselpaar erzeugen
Geben Sie in der Shell des Clients (d.h. Ihres lokalen Computers) folgende Befehle ein:
mkdir ~/.ssh
ssh-keygen -t rsa -f /.ssh/rsa.id -N ""
Der Befehl mkdir erzeugt ein Verzeichnis .ssh im Home-Verzeichnis (falls noch nicht
vorhanden). Mit ssh-keygen wird ein rsa-Schlüssel erzeugt und in der Datei rsa.id ohne
Passphrase abgelegt (ohne Passphrase ist sehr wichtig).
3.2.2.2 Public-Key auf Server kopieren
ß
Loggen Sie sich mittels ssh <servername> -l <loginname> auf dem Server ein. Bsp. Für
den Benutzer sopra177 auf gorgo.ifi.unizh.ch: ssh gorgo.ifi.unizh.ch –l sopra177.
ß Erstellen Sie das Verzeichnis ~/.ssh durch die Eingabe des Befehls mkdir ~/.ssh.
ß Beenden Sie die Sitzung durch Eingabe von exit.
ß Wechseln Sie ins Verzeichnis ~/.ssh des lokalen Benutzers.
ß Kopieren Sie den Schlüssel mittels scp
scp /~.ssh/rsa.id.pub <username>@<servername>:/~.ssh
ß Als Beispiel für den Benutzer sopra177 auf gorgo.ifi.unizh.ch sieht es wie folgt aus:
scp /~.ssh/rsa.id.pub [email protected]:/~.ssh
Um diese Operationen auszuführen, müssen Sie einige Male das Passwort des Servers
eingeben.
3.2.2.3 Schlüssel auf dem Server eintragen
IntroCVS.doc
-6-
Softwarepraktikum
Sommersemester 2003
ß
ß
Prof. Dr. M. Glinz
Silvio Meier
Loggen Sie sich mittels ssh <servername> -l <loginname> auf dem Server ein. Bsp. Für
den Benutzer sopra177 auf gorgo.ifi.unizh.ch: ssh gorgo.ifi.unizh.ch –l sopra177.
Geben Sie folgendes ein:
echo '# cvs key' | cat - ~/.ssh/rsa.id.pub >> ~/.ssh/authorized_keys
ß
Diese Zeile fügt den Schlüssel der Datei authorized_keys im .ssh Verzeichnis hinzu und
authentisiert damit automatisch alle Clients, die sich mit diesem Schlüssel anmelden.
Somit brauchen diese Clients kein Passwort mehr für den Login.
Loggen Sie sich aus, indem Sie exit eingeben.
3.2.2.4 Server in Verbindung mit dem Schlüssel auf dem Client eintragen
In der Datei ~/.ssh/config auf dem Client müssen folgende zwei Zeilen eingetragen werden:
Host <servername>
IdentityFile ~/.ssh/rsa.id
Mit diesen zwei Zeilen wird dem Client mitgeteilt, dass er sich mittels dem Schlüssel in der Datei
rsa.id beim angegebenen Server zu authentifizieren versuchen soll. Konkret sehen diese zwei
Zeilen für unser Beispiel von oben wie folgt aus:
Host gorgo.ifi.unizh.ch
IdentityFile ~/.ssh/rsa.id
Diese Einträge können manuell mit einem Texteditor (z.B. pico oder emacs) gemacht werden.
Mit dieser Aktion ist die Konfiguration der schlüsselauthentisierten ssh-Verbindung beendet. Nun
sollte ein Einloggen mittels ssh <servername> -l <username> beim Server ohne Passwort möglich
sein.
3.3 CVS-Verwendung mittels CVS-Server
Auf diese Art der Verwendung von CVS wird hier nicht näher eingegangen. Für nähere
Informationen konsultieren Sie [ceder03] .
4. Verwendung von CVS in der Shell
Die folgenden Befehle können in der Shell verwendet werden, um auf ein CVS-Repository
zuzugreifen. Dabei wird vorausgesetzt, dass die, unter 3. bzw. 3.2.1 genannten Angaben als
Umgebungsvariablen in der Shell gesetzt sind. Die nachfolgenden Aufrufe sollen beispielhaft die
wichtigsten cvs-Kommandos bei der Verwendung in einer Shell zeigen.
Befehl
cvs add –m „Test Java program“ Test.java
IntroCVS.doc
Was passiert?
Fügt eine Datei Test.java dem Repository hinzu. Die
Dateibeschreibung heisst “Test Java program”. Die Datei
ist noch nicht sofort im Repository verfügbar, sondern
wird erst im zentralen Repository abgelegt, wenn das
nächste Mal Commit ausgeführt wird.
-7-
Softwarepraktikum
Sommersemester 2003
cvs commit –m “changes in directory committed”
cvs edit Test.java
cvs unedit Test.java
cvs commit –m “bug 132 fixed” Test.java
cvs remove Test.java
cvs add NewDirectory
cvs remove AnotherDirectory
cvs add –kb test.gif
cvs update –d –P
cvs up NewDirectory
cvs checkout mylittleproject
cvs update
cvs commit
IntroCVS.doc
Prof. Dr. M. Glinz
Silvio Meier
nächste Mal Commit ausgeführt wird.
Führt alle Änderungen aus, d.h. Dateien, die verändert
bzw. mit add hinzugefügt wurden, werden als neue
Version im Repository abgelegt. Dabei wird die Meldung
“changes in directory committed” geschrieben. Dieser
Befehl hat rekursive Wirkung, d.h. sowohl alle
veränderten bzw. hinzugefügten Dateien im aktuellen
Verzeichnis, wie auch in allen Unterverzeichnissen
werden ins Repository geschrieben.
Setzt die Datei Test.java editierbar, d.h. der lokale
Schreibschutz wird aufgehoben. Die Datei kann nun
verändert werden.
Alle lokalen Modifikationen der Datei Test.java werden
rückgängig gemacht, d.h. die Datei wird ersetzt durch die
aktuelle Version im Repository.
Dieser Befehl macht ein Commit für eine bestimmte Datei
Test.java mit der entsprechenden Meldung.
Dieser Befehl entfernt eine Datei aus dem Repository.
Zuvor muss aber die Datei in der lokalen Repositorykopie
gelöscht werden.
Dieser Befehl fügt ein Verzeichnis mit dem Namen
NewDirectory hinzu. Zuvor muss das Verzeichnis in der
lokalen Kopie angelegt worden sein. Beim nächsten
Commit wird das Verzeichnis im zentralen Repository
erzeugt.
Entfernt das Verzeichnis AnotherDirectory und alle
Unterverzeichnisse und Unterdateien.
Fügt die Datei test.gif als Binärdatei hinzu (d.h. keine
Zeichentransformation für Linefeed und Umlaute wird
vorgenommen).
Macht ein Update, d.h. lädt alle geänderten Dateien aus
dem Repository herunter, legt dabei neue Verzeichnisse
an (-d) und löscht in der lokalen Kopie des Repositories
veraltete (d.h. leere) Verzeichnisse (-P). Sind Dateien
lokal modifiziert worden, so wird versucht eine
Zusammenführung zu machen.
Macht ein Update für das Unterverzeichnis NewDirectory
und alle darin enthaltenen Unterverzeichnisse.
Holt eine neue lokale Kopie des CVS Repository-Moduls
mylittleproject und legt dieses im aktuellen lokalen
Verzeichnis ab.
Macht ein (rekursives Update) über die lokale Kopie des
Repositories (ohne Update der Verzeichnisstruktur)
Macht ein Commit (rekursiv) für alle Dateien, die lokal im
aktuellen Verzeichnis oder in einem Unterverzeichnis
modifiziert wurden. Weil keine Meldung angebeben
wurde, wird entweder ein Editor gestartet, in dem eine
-entsprechende
8Meldung eingegeben werden kann (falls
die Umgebungsvariable EDITOR gesetzt ist), bzw. es
wird in der Shell eine Eingabeaufforderung für die
Meldung angezeigt.
Softwarepraktikum
Sommersemester 2003
cvs import -m "Imported sources" proj mylittleproject start
cvs edit anotherBin.gif
…. Ersetzen der Datei anotherBin.gif
cvs admin –kb anotherBin.gif
cvs commit –m « file set to binary » anotherBin.gif
Prof. Dr. M. Glinz
Silvio Meier
wurde, wird entweder ein Editor gestartet, in dem eine
entsprechende Meldung eingegeben werden kann (falls
die Umgebungsvariable EDITOR gesetzt ist), bzw. es
wird in der Shell eine Eingabeaufforderung für die
Meldung angezeigt.
Importiert alle Dateien und Verzeichnisse, sowie
Unterverzeichnisse und darin enthaltene Dateien in ein
neu angelegtes Modul im Repository. Dabei wird für alle
Dateien die Meldung „Imported Sources“ verwendet. Im
zentralen Repository liegt das Modul dann im
Unterverzeichnis proj. Angesprochen werden für einen
Checkout, kann das Modul über den Namen
mylittleproject. Start ist das initiale Versions-Tag,
welches für die Dateien verwendet wird.
Diese Folge von Befehlen wird dazu verwendet, um eine
Datei, welche versehentlich als Textdatei eingecheckt
wurde, aber eigentlich eine Binärdatei ist, in eine
Binärdatei umzuwandeln. Dabei wird die aktuelle Datei
zuerst editierbar gemacht. Dann wird die richtige
Binärdatei nochmals über die bestehende lokale Kopie
geschrieben (kopiert), da die vom Repository geladene
Datei wahrscheinlich beschädigt ist. Anschliessend wird
mit dem Admin-Befehl die Option -kb auf die Datei
gesetzt, d.h. die Datei wird binär gemacht. Ein Commit
schreibt die Änderungen ins Repository.
5. Arbeiten mit graphischen CVS-Client
Ein graphischer CVS-Client kann das Verwenden von CVS wesentlich vereinfachen. Ein
graphischer, frei verfügbarer CVS-Client kann unter [cvsgui03] gefunden werden. Im
Nachfolgenden wird beschrieben, wie die Einstellungen für den graphischen CVS-Client gemacht
werden müssen. Die nachfolgenden Bildschirmauszüge sind mit MacCVS gemacht. WinCVS
funktioniert äquivalent.
Die unter 3 genannten Angaben müssen unter der Funktion Einstellungen gesetzt werden. Dazu
kann im Menu maccvsX der Punkt Preferences ausgewählt werden. Es erscheint folgendes Bild
mit Einstellungen:
IntroCVS.doc
-9-
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
Im Beispiel hier wird lokal auf ein Repository auf dem Volume gorgo.ifi.unizh.ch zugegriffen.
Das Menü Create stellt diverse Befehle zur Verfügung:
Die wichtigsten sind Import module und Checkout module. Import module lässt es zu, ein neues
Modul im ausgewählten Repository zu erzeugen und lokal gespeicherte Dateien ins Repository zu
importieren. Checkout module lädt ein Modul aus dem Repository heraus. Bei beiden ist über ein
Dateidialog zuerst ein Vezeichnis auszuwählen, in das der Checkout erfolgt, repektive von dem
Dateien importiert werden.
Um eine lokale Kopie des Repository durchsuchen zu können kann im Menü File ein
Browserfenster auf das entsprechende Verzeichnis geöffnet werden:
IntroCVS.doc
- 10 -
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
Mittels diesem Browserfenster können die Verzeichnisse der loalen Arbeitskopie durchsucht
werden. Im Browserfenster, sind die Angaben daüber zu sehen, ob die Datei binär ist, welche
Version sie hat und ob sie lokal modifiziert wurde. Wird eine Datei ausgewählt so können
Operationen im Menü Modify ausgewählt werden:
Die Menüpunkte entsprechen den Operationen, die unter 2 eingeführt wurden.. Die Edit
Operation ist in der Schnellwahlliste unter dem Symbol
zu finden. Ob die entsprechende
Operation auf eine Datei anwendbar ist, hängt vom Zustand der Datei ab. Z.B. können lokale
Dateien (diese sind durch ein Fragezeichen gekennzeichnet) nur mittels add dem Repository
hinzugefügt werden.
6. Arbeiten mit CVS im SOPRA
IntroCVS.doc
- 11 -
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
6.1 Im Macintosh-Arbeitsraum
Im Macintosh-Arbeitsraum an der Uni werden Sie CVS mit lokalen Repository betreiben (siehe
3. und 3.1). Dies geschieht, indem Sie Ihr Repository in einem Unterverzeichnis Ihres
Datenlaufwerkes ablegen. Die lokalen Kopien liegen wiederum auf dem Datenlaufwerk in
separaten Unterverzeichnissen, d.h. für jede Person, welche in Ihrer Gruppe mit dem Repository
arbeitet hat es ein eigenes Unterverzeichnis, in welches die lokalen Kopien ausgelagert werden.
6.2 Zu Hause
Falls Sie zu Hause mit dem Repository arbeiten möchten, so müssen Sie gemäss 3.2 verfahren.
Vorsicht: Beim Betrieb von CVS von zu Hause aus müssen Sie eine OpenSSH kompatible
Software installieren. Nicht jede SSH-Software ist zu dieseem Zweck gleich gut geeignet. Falls
sie einen Windows-SSH Client installieren wollen, empfehlen wir [openssh03]. [putty03] ist für
diesen Zweck weniger zu empfehlen.
Anhang
Skript für die Installation von schlüsselauthentisierter ssh-Verbindung
Das folgende Skript kann dazu verwendet werden, um eine schlüsselauthentisierte sshVerbindung zu installieren. Dazu müssen die nachfolgenden Zeilen in eine Textdateikopiert
werden. Diese Datei muss Ausführungsrechte erhalten. Anschliessend führen Sie diese Datei auf
dem Client in einer Shell aus. Folgen Sie den Instruktionen.
#!/bin/bash
# -------------------------# use this script as follows, this script can be used on unix compatible operating systems with
# bash
# 1. copy past in text file
# 2. put the according execution rights on it
# 3. execute it on the client, with which you want to do a login without password authentication
#
only by using key authentication. (Note open ssh or a comparable ssh client must be installed)
# 4. follow the instructions
# read user information
echo Please enter server name, where to connect without password
read SERVER
echo Please enter username name login for the server
read GROUP
echo
echo
read
echo
Please enter user home directory on server, i.e. where the directories are located
normally /home
SERVER_HOME
Entered Server Login: $GROUP
# test if ssh directory exists.
if test ! -e $HOME/.ssh
then
echo "*** creating .ssh dir on local account"
mkdir $HOME/.ssh
fi
echo "*******************************************************************"
echo "** now you have to enter several times your password on the server"
echo "** for several remote operations"
echo "*******************************************************************"
echo ""
echo "*** creating .ssh dir on remote server $SERVER:$SERVER_HOME/.ssh"
ssh $SERVER -l $GROUP "mkdir $SERVER_HOME/$GROUP/.ssh"
#if key already exists, use existing key
if test ! -e $HOME/.ssh/rsa.id
then
echo "*** generating public/private key pair"
ssh-keygen -t rsa -f $HOME/.ssh/rsa.id -N ""
fi
IntroCVS.doc
- 12 -
Softwarepraktikum
Sommersemester 2003
Prof. Dr. M. Glinz
Silvio Meier
echo "*** copying public key to server"
scp -r $HOME/.ssh/rsa.id.pub $GROUP@$SERVER:$SERVER_HOME/$GROUP/.ssh
echo "*** registering key @ server "
ssh $SERVER -l $GROUP "echo '# cvs key' | cat - ~/.ssh/rsa.id.pub >> ~/.ssh/authorized_keys"
echo "*** writing client configuration"
echo "Host $SERVER" >> $HOME/.ssh/config
echo "
Identityfile $HOME/.ssh/rsa.id" >> $HOME/.ssh/config
echo
echo
echo
echo
echo
"****************************************************"
"** Now login without passwort should happen, proofing"
"** that it works, otherwise something's wrong."
"****************************************************"
""
echo "Test now when logging into $SERVER, no password required any more!"
ssh -l $GROUP $SERVER
Referenzen
[blandy03]
[cvs03]
[ceder03]
[cvsgui03]
[glinz02]
[openssh03]
[putty03]
IntroCVS.doc
Blandy, J.: Introduction to CVS, http://www.cvshome.org/docs/blandy.html, 2003
Diverse: Homepage von CVS, http://www.cvshome.org/, 2003
Cederqvist,
P.:
Version
Management
with
CVS,
http://www.cvshome.org/docs/manual/, 2003
Diverse: The CVS GUI, http://sourceforge.net/projects/cvsgui, 2003
Glinz M.: Vorlesungsskript WS 02/03 , Software Engineering I. Institut für
Informatik der Universität Zürich
Johnson, M.: Open SSH Web-Site for Windows:
http://lexa.mckenna.edu/sshwindows/, 2003
Tatham, S. et al.: Putty Homepage,
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html, 2003
- 13 -

Documentos relacionados