Freie Universität Berlin, Fachbereich Mathematik und Informatik
Institut für Informatik, AG Informatik in Bildung und Gesellschaft

Lehrveranstaltung: Partizipation im Internet im WS02/03, Thema CVS

CVS für eigene Projekte am Fachbereich

Hier am Fachbereich gibt es einen CVS-Server auf dem Rechner projects. Hier können Fachbereichsangehörige ein eigenes Repository bekommen. Das Repository pi für die Lehrveranstaltung "Partizipation im Internet" liegt also im Verzeichnis /cvsroot/pi.

Ist so ein Verzeichnis vom Rechnerbetrieb eingerichtet worden besteht wegen unterschiedlicher Userverwaltung nur eine Einloggmöglichkeit für den Projektleiter, der dann die weiteren Konfigurationen selbst vornimmt. Jedes Projekt erhält ferner einen user-account, der für die normalen Arbeitsvorgänge benutzt wird.

Konfiguration

Alle zur Konfiguration benötigten Dateien befinden sich auf dem Rechner projects im Unterverzeichnis CVSROOT zum eignen Projekt, also im Beispiel /cvsroot/pi/cvsroot. Um als user die Einstellungen dort vorzunehmen, muss man sich mit ssh auf dem Rechner einloggen und das Verzeichnis erreichen (eigene Eingaben sind fettgedruckt):

user@rechner:~$ ssh user@projects.mi.fu-berlin.de 
user@projects's password: institutspasswort
user@lee:~$ cd /cvsroot/pi/CVSROOT
    

Damit jeder Teilnehmer über die pserver-Methode Zugriff erhält, muss für jeden ein Name und ein Passwort vergeben werden. Dabei sollte nicht das Institutspasswort verwendet werden, da die Passwörter bei der pserver-Methode im Klartext über das Netzgeschickt werden.

Um die Liste zu generieren, wird die Datei passwd angelegt und im vi-Editor mit Daten gefüllt:

user@lee:/cvsroot/pi/CVSROOT$ touch passwd
user@lee:/cvsroot/pi/CVSROOT$ vi passwd
    

Im vi kann mit dem Buchstaben i Text eingefügt, mit a angehangen und mit x gelöscht werden. Den jeweiligen Modus beendet man mit der Escape-Taste (Esc).

Für jeden Teilnehmer erstellt man dann eine Zeile in der Datei der folgenden Form:

    name:password-krypt:project-user-account
    

Der name kann frei gewählt werden (8 Buchstaben). Für das vergebene Passwort wird nur der "Krypt" gespeichert, der für das Klartextpasswort erzeugt werden muss.

Soll sich jemand mit dem Namen "musterma" und dem Passwort "meinpass" einloggen können, wird der Krypt folgendermaßen auf der Kommandozeile erzeugt:

user@lee:/cvsroot/pi/CVSROOT$ openssl passwd
Password: meinpass
1zmWvUZw268Mc
    

Der Rest ist nur Copy&Paste des Namens, des Krypts und des Projekt-Users im Editor:

    musterma:1zmWvUZw268Mc:cvspi
    

Der vi wird beendet, indem man wieder mit der Escape-Taste in den Kommando-Modus wechselt und :q zum verlassen oder :wq zum schreiben und verlassen eingegeben wird.

Zugang per pserver

Schreibenden Zugriff auf das Archiv für Projektteilnehmer besteht einzig in der pserver-Methode. Vom Projektleiter haben sie einen Zugangsnamen und ein Passwort bekommen.

Um sich zum Zugriff einzuloggen, geben sie ein:

user@mybox:/home/user$ cvs -d :pserver:name@projects.mi.fu-berlin.de:/cvsroot/pi login
Password: meinpass
    

Zum Auschecken dann das übliche Kommando checkout (abgekürzt co) und dem Modulnamen (hier "comets"):

user@mybox:/home/user$ cvs -d :pserver:name@projects.mi.fu-berlin.de:/cvsroot/pi co comets
    

Danach wird ein Verzeichnis mit dem Modulnamen und alle Dateien des Moduls angelegt. Die Unterverzeichnisse mit dem Namen CVS enthalten Steuerinformation, die nicht verändert werden sollten. Die Dateien des Moduls sollen aber gerade verändert werden, allerdings nicht in der Formatierung, sonst ändert sich nämliche JEDE Zeile der Datei, wodurch man die Datei später höchstwahrscheinlich per Handarbeit zusammenführen muss. Wenn die EIngaben als Ganzes einen Sinn ergeben (also zum Beispiel kompilierbar sind), kann man die Dateien wieder dem Repository zurückliefern. Zum Einchecken an das Repository eingeben:

user@mybox:/home/user$ cvs -d :pserver:name@projects.mi.fu-berlin.de:/cvsroot/pi ci comets
    

Wenn in der Zwischenzeit bereits andere eingecheckt haben, muss man diese Änderungen erst seiner lokalen Arbeitskopie mitteilen, indem man ein update ausführt und danach dann den Checkin wiederholt.

 user@mybox:/home/user$ cvs -d :pserver:name@projects.mi.fu-berlin.de:/cvsroot/pi update comets
    

Zugriff über das Web-Interface

Beim letzten Mal wurde ein einfacher CVS-Zugang realisert, der darauf basiert, sich auf dem Rechner einzuloggen, auf dem das Repository liegt (mehr dazu unter Getting Startet). Voraussetzung ist daher eine Zugangskennung zum Rechnernetz.

Konfiguration des Servers

Der Zugang über ein Client-Programm funktioniert nur, wenn das CVS-Serverprogramm nicht nur installiert, sondern auch gestartet ist und ständig den dazugehörigen Port (2401) nach Anfragen abhört. Um den Port abzuhören wird die Datei /etc/services um den Zeile cvspserver 2401 ergänzt. Um den CVS-Server beim Starten des Rechners gleich mit zu starten, erfolgt ein Eintrag in der Konfigurationsdatei des Internet-Daemons /etc/inetd.conf.

Konfiguration des Repositories

Das Repository wird mit der Einstellung der Umgebungsvariablen CVSROOT auf das Verzeichnis /usr/local/cvs auf dem eigenen Rechner bekanntgegeben. Alle weiteren Konfigurationsdateien befinden sich im projektübergreifenden Verzeichnis /usr/local/cvs/CVSROOT. Veränderungen in den einzelnen Konfigurationsdateien werden durchgeführt, indem das Verzeichnis wie ein anderes Projektmodul auch ausgecheckt wird:


cvs co CVSROOT

Nun sind alle Konfigurationsdateien als eigene Arbeitskopie vorhanden und können editiert und anschließend wieder eingecheckt werden:


cvs ci CVSROOT

Weitere Details zur besseren Arbeit mit CVS

Binärdateien

Eine sinnvolle Änderung in einem Archiv, das eine Website enthält, besteht darin, Binärdateien bekannt zu machen. Bei Websites sind dies vor allem Grafikdateien mit der Endung .gif und .jpg, was in der Datei cvswrappers global eingestellt werden kann.

Aufgabe: Führe die obigen Arbeitsschritte aus. Editiere die Datei cvswrappers so, dass Grafikdateien als Binärdateien behandelt werden.

E-Mail-Benachrichtigung

Bei Konflikten sollen die betroffenen User automatisch vom System per E-Mail benachrichtigt werden. Damit die Dateien nicht an user@Clientrechner verschickt werden, sondern an eine gültige E-Mail-Adresse, verändern wir die Konfigurationsdatei users

Aufgabe: Füge Deine E-Mail-Adresse in die Konfigurationsdatei users ein!

Konfiguration des Clients

Die Hauptänderungen werden in Umgebungsvariablen gespeichert (oder direkt im grafischen Clientprogramm, wie WinCVS, eingestellt). Der Pfad zum Repository wird in der Variablen CVSROOT bekanntgegeben und enthält auf dem lokalen Rechner lediglich den Pfad, während auf einem anderen Rechner die externe Zugangsart spezifziert wird:

export CVSROOT=:ext:user@rechner:pfad

...in der bash bzw. bei der c-shell...

setenv CVSROOT :ext:user@rechner:pfad

Bei dieser Methode wird der Zugang über eine Remote-Shell (also das Einloggen auf dem entfernten Rechner) hergestellt. Aus Sicherheitsgründen (damit Passwörter nicht im Klartext übertragen werden) kommt dabei nicht das rsh, sondern das ssh-Prgramm zum Einsatz, was eingestellt werden muss:

export CVS_RSH=ssh

...in der bash bzw. bei der c-shell...

setenv CVS_RSH ssh

Aufgabe: Führe die obigen Arbeitsschritte aus und versuche, mit Deiner Kennung das Repository auf dem Serverrechner tuxedo anzusprechen und die Dateien mit WinCVS auszuchecken.

Informationen zur Revision

Durch die Schlüsselworte $Revision: 1.5 $ und $Date: 2001/12/18 07:35:57 $ kann die Version und das letzte Änderungsdatum in die Datei eingefügt werden.

Aufgabe: Füge beide Schlüsselworte in die von Dir bearbeitete HTML-Seite ein!