Versionsverwaltung mit Access und CVS

André Minhorst, Duisburg

Beim Thema Versionsverwaltung fällt dem Anwender von Microsoft-Entwicklerprodukten erstmal Visual Source Safe ein. Wenn man über den Tellerrand schaut, finden sich dort einige vor allem aus der Unix-Welt stammende Produkte, allen voran CVS (Concurrent Version System). Der vorliegende Beitrag stellt die Grundlagen zu diesem System vor und klopft ab, inwieweit es sich zur Kooperation mit Microsoft Access bewegen lässt.

CVS ist eine Software zur Versionsverwaltung von Dateien. Es ist das Open Source-Pendant zu Microsoft Visual Source Safe (VSS), ist aber im Vergleich zu diesem Open Source-Software.

Versionsverwaltungssoftware erfüllt mehrere Aufgaben gleichzeitig: Der wichtigste Punkt ist, dass der Quellcode an einer zentralen Stelle gespeichert und von allen beteiligten Entwicklern kopiert, bearbeitet und wieder zurückgespielt werden kann.

Halten sich alle beteiligten Personen an die Regeln, hat jede eine weitgehend aktuelle Version des Projektes auf der Festplatte. änderungen lassen sich mit Versionsverwaltungen leicht ins System übernehmen und an die anderen Entwickler verteilen.

Der zweite wichtige Punkt folgt aus der Bezeichnung dieser Software als Versionsverwaltungssystem:

Jede neue Version einer Datei wird mit allen änderungen registriert; dementsprechend kann das Versionsverwaltungssystem jederzeit frühere Versionen einer Datei rekonstruieren und bereitstellen.

Dieser zweite Punkt bildet den Grundstein für die in diesem Beitrag vorgestellten Vorgehensweisen und die daraus resultierende Lösung.

Wie läuft die Versionsverwaltung ab?

üblicherweise geht man bei der Versionsverwaltung davon aus, dass ein Verzeichnis mit seinen Unterverzeichnissen und Dateien den Quellcode für ein Projekt oder einen Teil eines Projektes repräsentiert. Da der Quellcode während der Entwicklung änderungen unterworfen ist, müsste man ohne Versionsverwaltung regelmäßig Kopien des Verzeichnisses anlegen, um später bestimmte Versionsstände rekonstruieren zu können – etwa, wenn man in die falsche Richtung entwickelt hat und ein Stück zurückrudern möchte.

Der Ablauf bei der Entwicklung von Software mit der Unterstützung durch eine Versionsverwaltung sieht folgendermaßen aus:

Sobald man es für sinnvoll erachtet, fügt man der Versionsverwaltung den vorhandenen Quellcode hinzu. Unter CVS heißt dieser Vorgang “Import”.

Sobald der Quellcode einmal in einem Modul des Repositorys gelandet ist, kann man die komplette Struktur in jedem beliebigen Verzeichnis wieder herstellen. Dieses Verzeichnis wird somit zum Arbeitsverzeichnis.

Hat man dort änderungen an den Dateien vorgenommen, kann man die änderungen auf die im Repository gespeicherten Dateien übertragen. Arbeitet man allein (das ist bei Access-Entwicklern recht oft der Fall), ist man weitgehend flexibel, was den Zeitpunkt des “Eincheckens” der änderungen betrifft: Alle zwei Stunden, einmal am Tag, oder einfach, wenn Sie den Eindruck haben, dass Sie den aktuellen Zwischenstand noch einmal reproduzieren möchten.

Im Team sieht das natürlich anders aus: Hier sollte man regelmäßig die aktuelle Version seiner Arbeitsdateien wieder einchecken, gerade wenn mehrere Entwickler an zusammenhängenden Teilen des Projekts arbeiten und auf die jeweiligen Aktualisierungen des anderen angewiesen sind.

Access und Versionsverwaltung

Wer mit Access entwickelt, kennt das: Aufgrund der “monolithischen” Struktur einer Access-Anwendung kann man gar nicht viel anders, als regelmäßig Sicherungskopien der kompletten Datenbank anzulegen.

Das macht es natürlich sehr schwer, einen bestimmten Versionsstand zu finden – wenn man die vorgenommenen änderungen nicht umfassend dokumentiert hat.

Dies kommt vor allem dann ungelegen, wenn man nur mal eben die letzten paar geänderten Zeilen wiederherstellen möchte, aber die Kapazität der Rückgängig-Funktion des Visual Basic-Editors wieder mal ein wenig zu klein ist.

Installation von CVS

Der Schnelldurchlauf der Installation von CVS für Windows sieht folgendermaßen aus:

  • Laden Sie die aktuelle Version von CVSNT von der Internetseite http://www.cvsnt.com/ herunter.
  • Starten Sie die Installation.
  • Akzeptieren Sie alle Voreinstellungen des Setup-Assistenten.
  • Starten Sie den Rechner neu. (
  • Inbetriebnahme von CVS

    CVS speichert die zu zu verwaltenden Dateien in einem so genannten “Repository”. Das erstellen Sie wie folgt:

  • In der Systemsteuerung finden Sie einen Eintrag mit der Beschriftung CVS for NT. Starten Sie die Benutzeroberfläche per Doppelklick (s. Abb. 1).
  • Stoppen Sie den CVS-Service.
  • Wechseln Sie zu Repositories und klicken Sie auf Add. Geben Sie das Verzeichnis an, in dem CVS das Repository anlegen soll, und bestätigen Sie die Initialisierung des Verzeichnisses als Repository (s. Abb. 2).
  • Wählen Sie auf der Registerseite Advanced ein temporäres Verzeichnis aus, das Sie am besten schon vorher anlegen – beispielsweise unter dem Namen “CVSTemp”.
  • Behalten Sie die übrigen Einstellungen bei und starten Sie den Dienst wieder. (
  • Abb. 1: CVS in der Systemsteuerung

    Zugriffsart

    CVS bietet verschiedene Arten des Zugriffs auf das Repository an, die an die einzelnen Anwendungsfälle angepasst sind. In unserem Falle soll sich das Repository auf dem lokalen Rechner befinden und ohne Benutzername und Kennwort erfolgen. Je nachdem, ob man sich in einem als solches gekennzeichneten Arbeitsverzeichnis befindet, muss man CVS die Art der Verbindung und die damit zusammenhängenden Parameter mitteilen, bevor man auf das Repository zugreifen kann. Ruft man eine CVS-Anweisung vom Arbeitsverzeichnis selbst auf, bezieht CVS die benötigten Informationen aus Dateien, die extra für diesen Zweck zusätzlich zu den Arbeitsdateien im Verzeichnis vorliegen.

    Abb. 2: Festlegen des Verzeichnisses und Bestätigen des Einrichtungsvorgangs

    Nachfolgend lernen Sie die grundlegende Funktion der Anweisungen von CVS kennen. Der Schwerpunkt liegt dabei auf den Anweisungen, die von accessCVS, einem Plugin für Access-Datenbanken zur Integration von CVS, verwendet werden.

    Hinweis

    Weitere Informationen sowie eine Referenz zu CVSNT finden Sie im Internet unter der Adresse http://www.cvsnt.org.

    Projekt importieren

    Damit CVS überhaupt Wind von den zu verwaltenden Daten bekommt, “importieren” Sie diese und speichern sie damit erstmalig im Repository.

    Das ist die Grundlage für alle weiteren Operationen, mit denen Sie eine Datei bearbeiten und als neue Version ablegen, alte Versionen wieder hervorholen, Dateien hinzufügen oder entfernen können. Das Einchecken erfolgt allgemein mit folgender Anweisung:

    cvs import -m "<Bemerkung>" CVSBeispiel avendor arelease

    Damit kopiert man das komplette Verzeichnis inklusive aller Unterverzeichnisse und Dateien in das Repository. Der Platzhalter <Bemerkung> enthält eine Logmessage, mit der Sie Informationen über den aktuellen Stand speichern können. Diese Informationen können Sie mit jeder Aktualisierung des Inhalts des Repository übergeben. Damit erhalten Sie ein sehr wichtiges Mittel zur späteren Identifizierung des Inhalts des jeweiligen Revisionsstandes.

    Legen Sie zu Beispielzwecken ein Verzeichnis mit einer kurzen Textdatei an. Das Ganze erledigen Sie vom DOS-Prompt aus. Erstellen Sie zunächst das Testverzeichnis:

    mkdir c:\\cvsTest

    Wechseln Sie in das Verzeichnis:

    cd c:\\cvsTest

    öffnen Sie anschließend den Texteditor, geben Sie einen kurzen Text (etwa “Beispieltext”) ein und speichern Sie die Textdatei mit den entsprechenden Menübefehlen:

    edit Beispiel.txt

    Nun können Sie den Inhalt des Verzeichnisses in ein neues Modul im CVS-Repository importieren:

    cvs -d :local:<Repositorypfad> import -m "Neues Modul" Beispiel avendor arelease

    Dabei geben Sie für <Repositorypfad> den Pfad an, unter dem Sie das Repository angelegt haben. Achten Sie darauf, dass Sie statt des Backslash (\\) das Slash-Zeichen (/) verwenden.

    Die Zeichenfolge :local: gibt an, dass es sich um ein Repository auf dem lokalen Rechner handelt. Der Parameter -m und der folgende String dienen zum Anlegen einer Logmessage. Diese sollte in der Regel Informationen zu der eingecheckten Version enthalten. “Beispiel” ist der Name des neuen Repository. Diesen sollten Sie sinnvoll auswählen, da Sie ihn für alle weiteren Zugriffe benötigen. Die beiden letzten Elemente, avendor und arelease, sind zwar erforderlich, haben aber in diesem Zusammenhang keine wichtige Bedeutung und werden daher nicht weiter erläutert. CVS antwortet wie folgt (eingerückte Zeilen sind Fortsetzungen der vorherigen Zeile):

    cvs import: cwd=C:\\cvstest, 
        current=C:\\cvstest
    N Beispiel/Beispiel.txt
    No conflicts created by this import

    Das N vor der Angabe der Beispieldatei signalisiert, dass es sich um eine neue Datei handelt.

    Dateien auschecken

    Zum Auschecken von Dateien, also zum Anlegen einer Kopie der aktuellsten Version der kompletten Struktur, dient folgende Anweisung:

    csv checkout CVSBeispiel

    Die Anweisung legt – soweit nicht vorhanden – ein Arbeitsverzeichnis mit dem Namen des Moduls im aktuellen Verzeichnis an und kopiert dort die komplette Struktur des aktuellen Standes hinein.

    Mit dem folgenden Schalter können Sie alle Dateien eines bestimmten Versionsstandes in das Arbeitsverzeichnis auschecken:

    cvs checkout -r <Version> CVSBeispiel

    Praxis-Tipp

    CVS legt beim Checkout standardmäßig ein neues Verzeichnis in dem aktuellen Verzeichnis mit dem Namen des Moduls an. Um die Arbeitskopie in einem individuellen Verzeichnis anzulegen, verwenden Sie einfach den Schalter -d <Verzeichnis>.

    Ganz besonders wichtig für das Auschecken von Dateien ist die Möglichkeit, die Version der ausgecheckten Dateien per Parameter anzugeben. So kann man beispielsweise alle Dateien aus dem Repository in das Arbeitsverzeichnis kopieren lassen, die zu einem bestimmten Datum Gültigkeit hatten. Außerdem kann man auch zu einem beliebigen Zeitpunkt einen Release-Stand festlegen, der jederzeit wieder abgerufen werden kann.

    Beispiel

    Um bei unserem Beispiel zu bleiben, checken wir die ins Repository importierte Datei direkt einmal aus. Ohne diesen Schritt können Sie die Datei zwar bearbeiten, aber die Datei nicht mit dem Repository abgleichen (in einer Zeile):

     C:\\cvstest>cvs -d :local:h:/cvsrepository checkout -d c:\\cvstest Beispiel

    CVS gibt folgende Meldung zurück und bestätigt damit, dass ein Update auf dem Verzeichnis erfolgt ist (erkennbar an dem Buchstaben U vor dem Dateinamen):

    cvs checkout: cwd=C:\\cvstest,    current=C:\\cvstest
    cvs checkout: Updating c:\\cvstest
    U c:\\cvstest/Beispiel.txt

    Dateien updaten

    Wenn mehrere Entwickler an einem Projekt arbeiten, kann es sein, dass Entwickler A eine Datei des Projekts ändert und seine Version in das Repository überführt hat.

    Damit nun nicht Entwickler B zufällig änderungen an der gleichen Datei durchführt, diese zum Repository überträgt und damit eventuell die änderungen von Entwickler A verwirft, gibt es die Update-Anweisung.

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar