Subversion

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

Sie kennen 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 Versionierungssysteme 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:

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:

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 Zielpfad 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.

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

Keywords:Programmieren Kosten Subversion Version