Subversion

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Sie können das sicher alle: Sie schreiben ein Dokument oder ein Skript und speichern es ab. Einige Tage oder Stunden später überarbeiten Sie das Dokument und speichern es wieder. Und irgendwann Wünschen Sie sich die vorherige oder eine noch ältere Version zurück.

Nun hängt es davon ab, ob sie mit Schattenkopien auf dem Server arbeiten oder häufig genug eine Datensicherung durchführen oder ob sie die Selbstdisziplin einer eine manuelle Versionierung durchhalten. Klassisches Beispiel meine Codeentwicklung von CheckExObjects.

Das krankt natürlich daran, dass man sehr diszipliniert sein muss und bei Änderungen auch daran denkt, eine neue Version anzulegen. Das funktioniert solange gut, solange es sich um eine Datei (Hier ein einzelnes VBScript) handelt. Sobald jedoch mehrere Dateien zu einem Projekt gehören, wird dieses Verfahren unbrauchbar.

Versionierung mit Server

Also müssen Sie weg vom unkontrollierten Zugriff auf die Quelldateien und ein Versionssystem für die Verwaltung nutzen. Gerade im Bereich der Entwicklung gibt es schon lange Versionierungs-Systeme wie CSV, Microsoft SourceSafe und seit einiger Zeit auch Subversion. Aber auch im Office Umfeld stellen z.B. Sharepoint aber auch ein Wiki entsprechende Lösungen bereit, um Dokumente zu überarbeiten und die vorherigen Versionen zu behalten. Das Prinzip ist dabei immer das gleiche:

  • Daten auf dem Server
    Die Dokumente liegen auf einem Server, auf den Sie meist nicht "unkontrolliert" zugreifen können. Im Gegensatz zu einem Dateiserver und dem Windows Explorer können Sie nicht in eine Subversion Datenbank oder die SQL-Server hinter Sharepoint zugreifen. Sie müssen mit der entsprechenden Serveranwendung kommunizieren.
  • Auschecken
    Nun ist es aber so, dass alle Anwendungen (Work, Excel, Visual Studio etc.) fast immer mit "Dateien" arbeiten. Daher muss es einen Prozess geben, um die Informationen als Datei auf ein "Laufwerk" (Netzwerk oder Lokal) zu kopieren. Dieser Prozess bezeichnet man als Auschecken.
  • Lokal Bearbeiten
    Sie können dann wie gewohnt die Datei mit der gewünschten Anwendung bearbeiten
  • Einchecken
    Wenn Sie mit der �Bearbeitung fertig sind, müssen Sie die Änderungen natürlich wieder zurückstellen. Viel Programme erhöhen dann die Version, erzwingen die Dokumentation der Änderungen und protokollieren den Zeitpunkt und den Bearbeiter mit.

Mit Subversion ist das Auschecken über Kommandozeile oder über die Windows Explorer Erweiterung "Tortoise" möglich. Nach der Bearbeitung mit dem Programm ihrer Wahl müssen Sie danach die Dateien wieder einchecken. Word kann z.B. mit Sharepoint diesen Prozess in einer Anwendung abbilden, d.h. Word öffnet die Datei per HTTP (und speichert sie natürlich temporär lokal ab) um sie nach der Bearbeitung wieder einzuchecken.

Zusätzliche Programme erlauben es die verschiedenen Versionen zu vergleichen, Änderungen Rückgängig zu machen oder einfach nur grafisch den Verlauf zu dokumentieren.

Subversion Server

Damit das funktioniert, müssen Sie natürlich erst den Subversion Server installieren. Diese Software gibt es sowohl für diverse Unix-Plattformen aber auch für Windows. Die genaue Installationsbeschreibung würde den Rahmen der MSXFAQ sprengen und andere haben hier sicher aktuellere Beschreibungen. ich beschränke mich daher auf ausgewählte Informationen:

  • Datenbank oder Dateisystem
    Subversion muss die ganzen Daten Natürlich irgendwo speichern. Früher wurde dazu eine "Berkeley Datenbank" genutzt. Mittlerweile ist ein Dateisystem (FSFS) der Standard, indem für jede VersionsÄnderung einfach eine Deltadatei geschrieben wird. Die Datei "8" im Bild enthält also alle Änderungen , um von Version 7 auf Version 8 zu kommen.

    Natürlich kann man mehrere Dateisysteme parallel betreiben, so dass verschiedene Projekte nicht in einem großen Repository gemeinsam abgelegt werden müssen.
    Sie sollten dazu aber den SVNServ-Prozess ein geeignetes "Root-Verzeichnis" zuweisen, unter welchem er die Repositories findet. Um mehrere Festplatten zu nutzen, müssen Sie diese als Verzeichnisse in diesen Baum mounten oder mehrere SVNServ-Prozesse auf verschiedenen Ports starten.
  • SVN oder HTTP
    Der Subversion Server selbst kann entweder als Daemon laufen, d.h. als Programm, welches selbst die Daten annimmt und verarbeitet. Subversion kann aber auch als Modul in einem Apache Webserver eingebunden werden. Die Einbindung in den Apache hat zum einen den Vorteil, dass HTTP/HTTPS als Protokoll genutzt wird und dass zusätzlich die Authentifizierungsverfahren von Apache verwendet werden können
  • Authentifizierung
    Der SVNServ nutzt eine einfache Datei, um die Benutzer, Gruppen und Kennworte zu speichern. Die Anmeldung ist daher komplett losgelöst von einem Active Directory. erst durch Apache und dessen Authentifizierungsmodule ist eine Kopplung an das Active Directory möglich. Zwar müssen immer noch die Benutzer in Subversion gepflegt werden, aber die Berechtigung mit dem Kennwort wird über die Domäne abgewickelt.

Unterstützung durch Net at Work:
Wir nutzen bei Net at Work Subversion für die Koordination einiger Entwicklungsprojekte mit Apache und Windows Authentifizierung.

Tortoise auf dem Client

Natürlich benötigen Sie nun eine Software auf dem Desktop, um sich mit dem Datenspeicher von Subversion zu verbinden und die aktuelle Version zu exportieren. Diese Aufgabe übernimmt Tortoise, welches ich auf meinem PC installiert habe. Es erweitert den Windows Explorer um ein umfangreiches Kontextmenü.

f�r das erste "Auschecken" ist "SVN Checkout..." der direkte Weg. Sie müssen dazu natürlich die URL zum Subversion-Server und den Ziel-Pfad angeben.

Nach kurzer Zeit haben Sie dann die aktuelle Version der Dateien aus dem Repository als Kopie auch ihrem PC. Wenn Sie nun die Dateien verändern, dann sehen Sie dies im Windows Explorer direkt an den Icons:

 

Den Status der aktuellen Dateien merkt sich Tortoise in einem versteckten Verzeichnis ".svn". Löschen die dieses bitte nicht, da ansonsten die Änderungsinformationen korrupt werden und Sie je nach Fall entweder keine Änderungen einchecken oder nicht geänderte Dateien als neu einchecken.

Sie können allerdings das komplette Verzeichnis immer wieder löschen oder einfach nur ein Update exportieren. Die Daten auf ihrer Festplatte sind nie das Original, sondern immer nur eine Kopie, von denen Sie Teile später einmal zurückstellen können. Natürlich wird dabei geprüft, ob mittlerweile jemand anderes die gleiche Datei schon verändert hat. Sie können beim Auschecken einer Datei diese auch mit einer Sperre (LOCK) versehen, so dass andere Anwender diese nicht aus versehen ebenfalls ändern.

Tortoise ist übrigens auch das Mittel der Wahl um überhaupt erst mal ein Repository zu erstellen. Verbinden Sie ein Laufwerk mit dem Server oder installieren Sie Tortoise direkt auf dem Server und starten Sie auf einem leeren Verzeichnis über das Kontextmenü die Funktion "Create repository here".

Nach der Abfrage nach dem Zielformat ist die Subversion Datenstruktur bereits angelegt und kann von SVNServ genutzt werden. Sie sollten aber schon noch die Berechtigungen pflegen, da per Default "Aynonym" ein LESE-Recht hat. Sie sollten in der Folge es aber unbedingt vermeiden, in der Dateistruktur selbst Daten direkt zu verändern. Durch die Speicherung jeder Version als neue Datei ist eine Sicherung jedoch sehr einfach möglich. Alle Dateien werden nur noch gelesen. Ein Check-In erzeugt immer eine neue Datei.

Subversion Server Tipps und Tricks

Ich nutze intern den Subversion Server direkt und starten ihn dazu mit folgender Kommandozeile.

svnserve -d -r c:\SVNStore

Damit beim Start des Servers auch der Subversion Server direkt gestartet wird, behelfe ich mich mit dem Windows Taskmanager, welcher auch Programme beim Start des Computers starten kann

Für die Integration in einer Umgebung mit Apache und Active Directory ist es natürlich nicht nur erforderlich. Subversion als Modul in Apache einzubauen, sondern auch die Datei für die Benutzer und deren Gruppen aufzubauen. Hierzu haben ich mir ein kleines VBScript gebaut, welches Als Parameter den Pfad des "AuthorizationFile" erwartet und die weiteren Parameter die Gruppen aus dem Active Directory angeben.

subversionacl.1.0.vbs

Das Script liest die angegeben Gruppen aus und aktualisiert diese in der INI-Datei. Dort können und sollten Sie dann basierend auf den Gruppen die Berechtigungen pflegen. Letztlich können Sie dann einfach im Active Directory die Mitarbeiter in die entsprechenden Gruppen aufnehmen und durch das Script diese Daten auch in Subversion übernehmen.

Subversion automatisieren

Subversion ist aber auch in der Hinsicht auf dem Server interessant, weil der Prozess SVNSERV bei einem Check-In von Dateien die folgenden Programme nacheinander versucht zu starten.

  • hooks\post-commit.exe
  • hooks\post-commit.cmd
  • hooks\post-commit.bat

Dies erlaubt z.B.: einer Firma. nach einem Check-In z.B.: die Änderungen sofort zu melden (RSS-Feed, Mail etc.) oder andere Aktionen anzustoßen.

Subversion Erfahrungen und Ausblicke

Für die Entwicklung von Programmen ist eine Versionierung absolut erforderlich und mit  Subversion sehr einfach und kostengünstig realisierbar. für die Pflege von einfachen VBScript-Code, der sich in einer Datei befindet, muss es nicht gleich Subversion sein. Aber sobald ein Programm aus mehreren Dateien besteht und mehrere Entwickler an ihren Bausteinen arbeiten, ist Subversion oder ein ähnliches System zwingend erforderlich.

Interessant ist Subversion aber noch aus anderer Sicht. Theoretisch könnten Sie sogar ihre Dokumente in Subversion verwalten. Da der Server auch per HTTPS erreichbar sein kann, ist damit sogar eine Art "Dateiserver über Internet" möglich. Das ist an sich nichts neues. Schließlich entwickeln Unmenge von Programmierern so auf Sourceforge und anderen Plattformen ihren Code. Aber auch ein Dienstleister könnte so Dokumente oder ganze Verzeichnisse versionsgesichert bereit stellen. Das ganze auch über Firmengrenzen hinweg, so lange es einen zentralen Server gibt. Schade nur, dass Office nicht direkt "Subversion" versteht und die Anwender nicht einfach über "Datei - öffnen - Subversion.." die Funktion des Aus- und Eincheckens. Wobei ich einige Hinweise in Newsgroup gefunden habe, die Subversion als WebDAV-Server auch für Office nutzbar machen würde.

Weitere Links