Der Linuxserver als CVS-Server

Gliederung
1 Einleitung
2 Voraussetzungen
3 Das Grundprinzip
4 Die Einrichtung von CVS auf dem Linuxserver
5 Konfiguration eines Windows-Clients
6 Konfiguration eines Linux-Clients

1 Einleitung

Was ist ein CVS-Server bzw ein CVS-System?

CVS ist ein Versions-Kontrollsystem, d.h. mit Hilfe von CVS können Sie (vor allem bei Textdateien) verschiedene Versionen dieser Dateien speichern und haben jederzeit die volle Kontrolle über diese Dateien. Vor allem bietet CVS Ihnen die Möglichkeit, vorherige Zustände der Dateien wieder herzustellen, Änderungen wieder rückgängig zu machen, verschiedene Varianten anzulegen, etc.. Und das Ganze funktioniert auch im Netz unter der Beteiligung von verschiedenen Autorinnen und Autoren.

Diese Eigenschaften machen CVS vor allem bei Programmentwicklern interessant, aber eigentlich läßt es sich auch bei den meisten anderen Dateien, die in Versionen weiterentwickelt werden, wunderbar einsetzen. Ich werde im folgenden als Beispiel deshalb auch die gesamten HTML-Seiten meiner Linux-Serverbeschreibung verwenden. Die eigentlichen HTML-Seiten sind ja auch Textdateien und deshalb gut dafür geeignet.

Die folgende Beschreibung ist vor allem für Leute gedacht, die erste Schritte mit CVS machen wollen. Die "Profis" können sicherlich viel mehr damit anfangen, aber wer dann "Blut geleckt" hat, kann sicherlich selber tiefer einsteigen. Die mit CVS gelieferte Dokumentation und auch die man-pages liefern eine Reihe von guten Hinweisen.

Weitere Informationen finden sich zu Hauf im Internet. Eine Suche mit einer Suchmaschine liefert bei den Stichworten "CVS" und "Einführung" unter anderem folgende Links zu deutschsprachigen Einführungen:
http://cs.bonn.edu/II/www-tech/cvs/cvs.html
http://informatik.uni-bremen.de/grp/flowtec/papers/doc/cvs-doku/cvs.html
http://wwwipr.ira.uka.de/~paro/CVS.html
http://wwwmath.uni-muenster.de/informatik/u/paehler/projekte/misc/cvs/

Wesentliche Ausschnitte des Buches "Open source Development With CVS" von Karl Fogel sind kostenlos aus dem Netz herunterzuladen, u.a. von der Webseite:
http://cvsbook.red-bean.com

Die offizielle Dokumentation von CVS gibt es u.a. unter
http://web.informatik.uni-bonn.de/II/ag-anlauf/cvs/cvs.ps

2 Voraussetzungen

Auf dem Linuxserver muß selbstverständlich das Netzwerk funktionieren und der Server muß von den anderen Rechnern aus erreichbar sein. Wenn Sie als Zugriffsmethode die "Remote Shell" (rsh) benutzen wollen, muß auch der entsprechende Daemon installiert und konfiguriert sein (rshd). Wenn Sie als Zugriffsmethode die Secure Shell ssh benutzen wollen, müssen Sie vorher ssh entsprechend konfigurieren. Letztere Methode ist aus Sicherheitsgründen dringend zu empfehlen! Deshalb finden Sie auf einer separaten Seite eine detaillierte Anleitung dazu.

3 Das Grundprinzip

Um nun ein Repository unter Kontrolle von CVs einzurichten, sind folgende Schritte notwendig: Das klingt vielleicht im ersten Moment umständlich, das Prinzip wird aber deutlich, wenn man sich die Arbeitsweise des CVS-Systems an einer Beispielsdatei (test.txt) deutlich macht. Die Idee ist folgende: Auf dem Server wird eine zentrale Version der Datei verwaltet. Jede Nutzerin, jeder Nutzer kann nun diese Datei in einem definierten Zustand (z.B. Version 2.1.3) aus dem Server-Repository auschecken und in sein lokales System einbringen. Dann wird diese Datei lokal bearbeitet und nach dem Ende der Bearbeitung wieder in das Repository auf dem Server eingecheckt. Dabei überprüft das CVS-System, welche Veränderungen gemacht wurden und registriert diese in der internen Datenbank. Hatte in der Zwischenzeit jemand anderes die selbe Datei verändert und wieder eingecheckt, so überprüft CVS, ob sich Konflikte zwischen den Änderungen ergeben oder nicht. Falls nein, werden die beiden Änderungen miteinander "verschmolzen", falls ja, wird derjenige, der versucht, diese "konfliktbeladene" Datei einzuchecken, über die Konflikte informiert und aufgefordert, diese zu lösen und dann erneut zu versuchen, die Datei einzuchecken.

Im Folgenden wird das Grundprinzip an einem Beispiel etwas ausführlicher für den Windows-Client erläutert.

4 Die Einrichtung von CVS auf dem Linuxserver

Für die Einrichtung auf dem Server müssen sie als root eingelogt sein.
Auf dem Server müssen die Pakete cvs und rcs installiert sein. Bei SuSE finden Sie diese in der Gruppe Programmentwicklung.

Wenn das CVS-System installiert ist, müssen Sie sich überlegen, in welchem Verzeichnis sich das sogenannte Repository (läßt sich etwa übersetzen als: Verwahrungsort) befinden soll. Ich gehe im Folgenden vom Verzeichnis /usr/cvs aus. Legen Sie dieses Verzeichnis an und dann innerhalb des Verzeichnisses ein weiteres Unterverzeichnis CVSROOT (das muß wirklich groß geschrieben werden!).

Jetzt muß das CVS-System initialisiert werden. Geben Sie dazu auf der Kommandozeile den Befehl cvs -d /usr/cvs init ein. Dadurch werden im Verzeichnis /usr/cvs/CVSROOT eine Reihe von Administrationsdateien angelegt. Ich mußte die Zugriffsrechte für die dortige Datei history ändern - beim Zugriff von außen beschwerten sich externe Clients darüber, daß sie keine Einträge in diese Datei schreiben durften. Ich habe eine Gruppe cvs eingerichtet und alle Benutzer, die cvs nutzen sollen als Mitglieder in diese Gruppe eingetragen. Dann habe ich die Gruppenzugehörigkeit dieser Datei entsprechend geändert chgrp cvs history.

Der Zugriff von externen Rechnern kann über verschiedene Methoden kontrolliert werden (es soll ja schließlich nicht jeder an den Dateien rumfummeln können). Die Kontrolle erfolgt entweder über das Benutzerpaßwort des im Server eingetragenen Benutzers oder indem einem fremden Benutzer (remote) das Zugriffsrecht erteilt wird.
Bei letzterer Variante gibt es verschiedene Methoden des Zugriffs, die sich unter Sicherheitsgesichtspunkten erheblich unterscheiden rsh und ssh. Ich empfehle dringend die Benutzung von ssh!

Zugriff mittels rsh

Im letzteren Fall muß die Datei /etc/hosts.equiv editiert werden. Dort muß die IP-Nummer bzw. der Rechnername des fremden Rechners eingetragen werden. Vorsicht: Der fremde Rechner wird unter Sicherheitsaspekten dem Server gleichgestellt! Wählen sie diese Methode nur in lokalen nicht öffentlichen Netzen! Zusätzlich muß dann im Heimatverzeichnis jedes Benutzers, der von außen Zugriff erhält eine Datei mit dem Namen .rhosts (mit Punkt davor!!) erstellt werden. Dort muß der Rechnername oder die IP-Nummer des fremden Rechners und der Benutzername eingetragen sein. Dürfen z.B. die Benutzer cvs von den Rechnern 192.168.1.20 und 192.168.1.21 zugreifen sieht die Datei /home/cvs/.rhost so aus:

192.168.1.20    cvs
192.168.1.21    cvs

Zugriff mittels ssh

Die Einrichtung von ssh finden Sie auf einer separaten Seite sowohl für Server als auch für Clients beschrieben.

Das war's auf dem Server.

5 Konfiguration eines Windows-Clients

Es gibt für Windows einen kostenlosen CVS-Client mit grafischer Oberfläche namens WinCVS, der meiner Ansicht nach wunderbar geeignet ist, in diese Materie einzusteigen. Er ist erhältlich von der Webseite http://www.cyclic.com (Da es sich bei dem Programm um die Portierung eines Mac-Clients handelt, sollten die folgenden Ausführungen auch für diesen gelten). Sie müssen lediglich die Zip-Datei entpacken und das im Archiv enthaltene Setup-Programm starten.

Gehen wir die notwendigen Schritte im einzelnen an einem Beispiel durch. Es sollen alle Dateien, die zu meiner Linux-Server-Beschreibung gehören, unter Kontrolle des CVS-Systems gebracht werden.

Grundsätzliche Konfiguration von WinCVS

Starten Sie WinCVS. Konfigurieren Sie zuerst das Programm für eine korrekte Verbindung zum Server. Wählen Sie im Hauptmenü den Punkt Cvs Admin und dort den Unterpunkt Preferences... . Tragen Sie als CVSROOT das Repository auf dem Server ein. Bei Zugriff auf einen Server erfolgt das wie bei einer E-Mail-Adresse plus der Verzeichnisangabe Benutzer@Server:Verzeichnis. Der Benutzer muß auf dem Server existieren! Der Eintrag unter Authentication gibt an, mit welcher Methode der Zugriff auf den Server erfolgt. Local mounted directory heißt, daß es sich um ein lokales Verzeichnis handelt, bzw. ein per NFS lokal gemountetes Vezeichnis; ".rhosts" file on the cvs server heißt, daß der Zugriff per rsh erfolgt; "passwd" file on the cvs server heißt, beim Zugriff wird in der Benutzerdatenbank des Servers nach dem Passwort gesucht und SSH server heißt, es besteht eine "secure shell" Verbindung (diese hat den Vorteil, daß das Paßwort verschlüsselt über das Netz übertragen wird, erfordert aber, daß der entsprechende Daemon auf dem Server installiert und konfiguriert ist (Auch wenn es lästig wird:ssh ist dringend zu empfehlen!).

Dateien von einem bestehenden Verzeichnis auf dem Client in das Server-Repository übertragen

Wechseln Sie nun in das Verzeichnis, in dem sich die Dateien befinden, die Sie mit CVs kontrollieren wollen. Im Listenfenster sehen Sie alle betreffenden Dateien.

Wählen Sie im Hauptmenü den Punkt Cvs Admin und dort den Unterpunkt Import module... .

Im folgenden Dialogfenster werden Sie nach dem Verzeichnis gefragt, von dem die Dateien zum Server importiert werden sollen (Die Bezeichnungen beim CVS werden immer aus Sicht des Servers formuliert). Es erscheint ein Fenster, in dem sie über "Filterprozesse" informiert werden. Dies hat den Hintergrund, daß CVS darüber informiert werden muß, wenn auch binäre (also nicht aus Text bestehende) Dateien verwaltet werden sollen. Denn bei solchen Dateien kann CVS logischerweise die Änderungen nicht mehr verfolgen und verwalten. Die Voreinstellungen von WinCVS sind recht gut, in den meisten Fällen sind keine Veränderungen mehr notwendig. Es macht sowieso mehr Sinn, CVS vor allem Textdateien anzuvertrauen. Es erscheint ein weiterer Dialog, in dem Sie nach dem Modulnamen und Pfad auf dem Server gefragt werden. Wählen Sie hier einen aussagekräftigen Namen (in unserem Beispiel linux-html) und bedenken Sie bitte die unterschiedliche Handhabung von Dateinamen in verschiedenen Betriebssystemen. Windows zeigt z.B. zwar  Groß- und Kleinbuchstaben an, verwendet aber intern nur Großbuchstaben. Alte Unixsysteme können z.b. nur Dateinamen bis maximal 32 Zeichen verarbeiten usw..Vendor tag sollte eine Kurzbezeichnung für den Hersteller enthalten (im Beispiel D-Reymann) und Release tag eine kurze Beschreibung des Versionsstandes (im Beispiel: Erstes-Release). Sie können zusätzlich noch weitere Erläuterungen im Feld für die log message eingeben. Bei Erfolg sehen Sie im unteren Fensterabschnitt von WinCVS eine Meldung, die die importierten Dateien zeigt und eine Meldung, daß der Import ohne Konflikte funktioniert hat.

Ab jetzt stehen diese Dateien allen zugelassenen Clients zur Verfügung.

Auf dem Client ein Verzeichnis unter CVS-Kontrolle einrichten

Bis jetzt ist allerdings erst die halbe Arbeit getan! Denn im Moment sind nur die Dateien auf dem Server unter Kontrolle des CVS-Systems, nicht aber die auf dem Rechner, von dem sie importiert wurden. Damit auch hier CVS arbeiten kann, müssen nun die Dateien vom Server "ausgecheckt" werden. Das funktioniert am besten, wenn Sie dafür ein Verzeichnis verwenden, daß noch nicht existiert. Wählen Sie im Hauptmenü den Punkt Cvs Admin und dort den Unterpunkt Checkout module... .Es öffnet sich ein Dialogfenster.

Wählen Sie in diesem Dialog das Verzeichnis aus, unterhalb dem das neue, unter CVS-Kontrolle stehende Verzeichnis erstellt werden soll. Im folgenden Dialog werden Sie dann nach dem Namen des Moduls gefragt, das vom Server geholt werden soll. Dies ist der Name, den Sie beim Import angegeben haben! Wenn Sie einmal einen Blick auf die Verzeichnisstruktur des Servers werfen, werden Sie feststellen, daß dort unterhalb des CVS-Root-Verzeichnisses ein Verzeichnis mit genau diesem Namen existiert.

Bevor Sie auf den OK-Knopf drücken, sollten Sie überprüfen, ob unter den globalen Einstellungen eventuell aktiviert ist, daß Dateien nur als "read-only", also nur zum Lesen, aber nicht mit Schreibzugriff vom Server geholt werden. Falls das Feld "Checkout read-only" aktiviert ist, so deaktivieren Sie diese Einstellung. Klicken Sie dann auf OK.

Sie müßten wieder im unteren Teil des Fensters eine Erfolgsmeldung sehen. Wechseln Sie in das Verzeichnis, das Sie eben erstellt haben (Menü "View -> Change Browser location"). Wenn Sie einmal mit dem Windows-Explorer in dieses Verzeichnis sehen, werden Sie feststellen, daß dort ein Unterverzeichnis CVS erstellt wurde. Dies braucht das CVS-System, um die Versionskontrolle abwickeln zu können.

Wichtig: Sie dürfen dieses Unterverzeichnis CVS niemals löschen oder verändern, wenn Sie wollen, daß CVS funktioniert.

Klicken Sie jetzt auf den Button "Refresh view" und Sie sehen das folgende Bild:

Im Hauptfenster sehen Sie den Dateinamen, die Versionsnummer (CVS fängt immer mit 1.1.1.1 an), Optionen für die dateien (-kb heißt z.B., daß es sich um eine binäre Datei handelt.

Die weitere Arbeit mit CVS

Ab jetzt müßte Ihr Arbeitsrythmus bei den Dateien immer wie folgt aussehen: Haben Sie neue Dateien zu Ihrem Projekt hinzugefügt, fügen Sie diese mit Selections->Add selection bzw. Selections->Add selection binary zum Projekt hinzu. Ab dann stehen auch diese Datein unter CVS-Kontrolle.

Alle tieferen Details zur Dateiverwaltung entnehmen Sie den Hilfedateien oder den genannten Webseiten oder Dateien.

4 Konfiguration eines Linux-Clients

Soll ein Linux-Client auf das Repository des Servers zugreifen, so müssen auch dort die Pakete cvs und rcs installiert sein (Sie enthalten sowohl Server- als auch Clientfunktionen).

Der Zugriff von einem Linux-Client ist alleine von der Kommandozeile möglich, es gibt aber auch ein grafisches Interface (tkCVS), das mir persönlich gut gefällt. Ich beschreibe im folgenden die notwendigen Arbeitsschritte für beide Varianten anhand des selben Beispiels wie für den Windows-Client:
 

4.1 Zugriff von der Kommandozeile

4.1.1 Grundsätzliche Konfiguration

Man kann man sich die Arbeit des wiederholten Eintippens des Namens des Repositories sparen, indem man sogenannte Umgebungsvariablen definiert. Das ist vor allem die Variable CVSROOT und ggf. noch CVS_RSH. Erstere speichert die Lage des Repositories, letztere die Art des Zugriffs auf den fremnden Server, wenn z.b. rsh oder ssh genutzt werden. Diese Angaben können aber auch jedesmal auf der Kommandozeile angegeben werden. Wenn Sie regelmäßig mit verschiedenen fremden CVS-Servern arbeiten, geben Sie vielleicht die Namen jedesmal ein, wenn Sie nur mit einem oder überwiegend mit einem CVS-Server arbeiten, lohnt es sich, die Angaben in einer Variable zu speichern. Im letzten Fall sollten Sie in Ihrem home-Verzeichnis die Datei .profile entsprechend ergänzen.

Je nach Shell, die Sie verwenden, kann die Art, wie Sie dies tun, variieren. In unserem Beispiel sollte dort eine Zeile stehen in der Form:
export CVSROOT=:ext:cvs-user@azalea.meinnetz.com:/usr/cvs
Bei anderen Shells können auch zwei separate Zeilen erforderlich sein:
CVSROOT=:ext:cvs-user@azalea.meinnetz.com:/usr/cvs
export CVSROOT
Wenn Sie ssh als Zugriffsmethode benutzen wollen, müssen Sie noch eine weitere Umgebungsvariable definieren:
export CVS_RSH=ssh

Die Angaben lesen sich wie folgt: :Zugriffsmethode:Benutzer@server:Verzeichnis.
Die wichtigsten Zugriffsmethoden werden entweder als :pserver: oder als :ext: angegeben. In unserem Beispiel erfolgt der Zugriff via ssh, deshalb die Angabe :ext:. :pserver: hieße, daß der Zugriff über die Passwort-Datei des Servers erfolgen würde.

4.1.2 Dateien von einem bestehenden Verzeichnis auf dem Client in das Server-Repository übertragen

Nehmen wir für das Linux-Beispiel an, das Verzeichnis /home/cvs-user/linux-html solle in das Repository des Servers übertragen werden und die Umgebungsvaraible CVSROOT sei wie oben beschrieben gesetzt. Wechseln Sie in das Homeverzeichnis, also das Verzeichnis oberhalb des Verzeichnisses, das übertragen werden soll.

Geben Sie auf der Kommadozeile ein:
cvs import -W "*.zip -k 'b'" -W "*.gif -k 'b'" -W "*.png -k 'b'" -m "Erster Import" linux-html D-Reymann Erstes-Release
Die Angaben in der Form -W "*.zip 'b' " informieren das CVS-System darüber, daß es sich bei einer Gruppe von Dateien oder bei einzelnen Dateien um Binärdateien handelt.

Wenn Sie die CVSROOT-Umgebungsvaraible nicht gesetzt haben, lautet die Zeile:
cvs -d :ext:cvs-user@azalea.meinnetz.com:/usr/cvs import -W "*.zip -k 'b'" -W "*.gif -k 'b'" -W "*.png -k 'b'" -m "Erster Import" linux-html D-Reymann Erstes-Release
Sie müßten jetzt die Bestätigung erhalten, daß der Import ohne Konflikte geklappt hat (No conflicts created by this import).

4.1.3 Auf dem Client ein Verzeichnis unter CVS-Kontrolle einrichten

Wie bereits beim Windows-Client beschrieben, ist bis jetzt nur auf dem Server ein Verzeichnis vorhanden, das unter Kontrolle von CVS steht. Damit Sie auch auf dem Client ein Verzeichnis haben, das unter Aufsicht von CVS steht, müssen Sie dieses vom Server auschecken. Da wir in diesem Beispiel den selben Namen für das neue Verzeichnis verwenden wollen wie für das Ursprungsverzeichnis, benennen wir das Ursprungsverzeichnis um mv linux-html linux-before.

Geben Sie in dem Verzeichnis, unterhalb dessen das neue von CVS kontrollierte Verzeichnis entstehen soll, den Befehl
cvs checkout linux-html
bzw. bei nicht gesetzter Umgebungsvariable CVSROOT:
cvs -d :ext:cvs-user@azalea.meinnetz.com:/usr/cvs checkout linux-html
ein. Sie müßten wieder eine Erfolgsmeldung sehen und unterhalb des aktuellen Verzeichnis müßte ein neues Verzeichnis linux-html erstellt worden sein und in diesem das Unterverzeichnis CVS mit den Kontrolldateien für das CVS-System.

Die weitere Arbeit mit CVS

Ab jetzt müßte Ihr Arbeitsrythmus bei den Dateien immer wie folgt aussehen:

4.2 Zugriff mit Hilfe von tkCVS

Wesentlich einfacher ist nach meinem Geschmack die Arbeit mit dem grafischen Interface zu CVS namens tkCVS. Dies bekommen Sie umsonst im Internet unter anderem von der tkCVS-Webseite:
http://www.neosoft.com/tcl/ftparchive/sorted/packages-7.6/apps/tkcvs-6.0/
Downloaden Sie die Datei tkcvs-6.0.tar.gz.

4.2.1 Installation/Grundsätzliche Konfiguration

TkCVS benötigt TK. TK ist die grafische Schnittstelle zur Kommandosprache TCL (Tool Command Language). Zur Nutzung von tkCVS müssen in Ihrem Linuxsystem die Pakete tcl und tk installiert sein!
Kopieren Sie die Datei tkcvs-6.0.tar.gz in ein beliebiges Verzeichnis auf dem Linuxrechner, in dem Sie Schreibrechte haben. Entpacken Sie die Datei, z.B. indem Sie auf der Kommandozeile folgenden Befehl eingeben:
tar -xvzf tkcvs-6.0.tar.gz
Es müßte jetzt ein Unterverzeichnis tkcvs-6.0 angelegt worden sein, in dem Sie weitere Dateien und Unterverzeichnisse finden. Wechseln Sie in das Unterverzeichnis, indem Sie cd tkcvs-6.0 eingeben und wechseln Sie weiter in das Unterverzeichnis tkcvs (cd tkcvs).
Dort finden Sie ein Installationsskript namens doinstall. Für SuSE 6.1 (und ich vermute auch für höhere Versionsnummern) müssen Sie eine kleine Änderung an diesem Skript durchführen. Öffnen Sie dieses Skript in einem Editor und Suchen Sie folgende Zeilen:
WISH=`which wish4.0`
if [ ! -f $WISH ]; then
  WISH=`which wish4.1`
fi

Da auf meinem SuSE-System die Version wish4.2 installiert ist, habe ich diese Zeilen geändert in:
WISH=`which wish4.2`
if [ ! -f $WISH ]; then
  WISH=`which wish`
fi

Sie sollten für die folgende Installation als root eingelogt sein. Geben Sie ./doinstall ein, um die Installation zu starten. Wenn Sie keine Fehlermeldung sehen, können Sie das Programm durch Eingabe von tkcvs starten.

TkCVS ist sehr umfangreich und mächtig. Deshalb im Folgenden nur die einfachsten Varianten zum Importieren und zum Auschecken der Dateien.

4.2.2 Dateien von einem bestehenden Verzeichnis auf dem Client in das Server-Repository übertragen

Starten Sie tkCVS und wechseln Sie in das Verzeichnis oberhalb des zu importierenden Verzeichnisses. Wählen Sie im Menü die Punkte File->Import... . Geben Sie im darauffolgenden Dialogfenster das Module Directory linux-html, als Module Name linux-html, als Version Number 1 und als Module Code z.B. D-Reymann ein und klicken dann auf OK.
Nach einiger Zeit erscheint ein Fenster mit der Mitteilung daß der Import ohne Konflikte abgelaufen ist und Sie sehen eine Liste der importierten Dateien..

4.2.3 Auf dem Client ein Verzeichnis unter CVS-Kontrolle einrichten

Damit Sie auch auf dem Client ein Verzeichnis haben, das unter Aufsicht von CVS steht, müssen Sie dieses vom Server auschecken. Da wir in diesem Beispiel den selben Namen für das neue Verzeichnis verwenden wollen wie für das Ursprungsverzeichnis, benennen wir das Ursprungsverzeichnis um mv linux-html linux-before.
Starten Sie tkCVS und wechseln Sie in das Verzeichnis oberhalb des zu importierenden Verzeichnisses. Wählen Sie im Menü die Punkte File->Checkout... . Im folgenden Dialogfenster geben Sie als Module code linux-html ein und Klicken auf Check Out. Bestätigen Sie die Nachfrage "This will check out bakara from CVS. Are you sure?" mit OK. Nach einer Weile sehen sie ein Fenster mit einer liste der ausgecheckten Dateien.

4.2.4 Die weitere Arbeit mit tkCVS

Ab jetzt müßte Ihr Arbeitsrythmus bei den Dateien immer wie folgt aussehen: Wenn Sie nur ausgewählte Dateien updaten oder Einchecken wollen, können Sie diese im Fenster von tkCVs markieren und entsprechende Menübefehle bzw. den passenden Button auswählen.

Viel Spaß.



Zurück zur Hauptseite