Did you know that you can navigate the posts by swiping left and right?

Versionsverwaltung unter Windows mit Subversion

04 Aug 2008 . Unknown . Comments

aboutpixel.de / Das A und O © Uwe Dreßler Sie werden sowohl von Programmierern als auch von Redaktionen eingesetzt, die meisten Content Management Systeme verwenden es und selbst Privatanwender setzen es oft ein ohne es überhaupt zu wissen. Die Rede ist von so genannten Versionsverwaltungen. Je nach Anwendungsfall können sie unterschiedliche Informationen erfassen. Allen gemein ist, dass sie unterschiedliche Versionen von Daten abspeichern und so den späteren Zugriff auf ältere Informationen ermöglichen. Im einfachsten Fall speichern Anwendungen wie Adobe Photoshop oder Microsoft Word solche Informationen mit den Anwendungsdaten. Mit Windows Vista bringt auch das Betriebssystem aus Redmond eine solche Funktion unter dem Namen „Schattenkopien“ mit.

[more]

Einführung

Unter Softwareentwicklern haben sich seit vielen Jahren zwei bzw. drei Systeme etabliert. Zum einen das kostenpflichte Produkt Visual SourceSafe von Microsoft und zum anderen CVS das seit einigen Jahren immer mehr von SVN abgelöst wird aufgrund der steten Weiterentwicklung. Beide letztgenannten sind sowohl kostenlos als auch unter einer Opensource-Lizenz verfügbar. Daneben gibt es noch zahlreiche weitere Produkte wie Mercurial oder ClearCase welche deutlich seltener zum Einsatz kommen aber sicherlich auch ihre Vorzüge haben.

Ich möchte mich in diesem Artikel auf Subversion, auch SVN abgekürzt, beschränken weil meine Erfahrungen hiermit am größten sind und die Einrichtung und Verwendung unter Windows leichter nicht sein könnte. Da es außerdem kostenlos ist, eine Unmenge an nützlichen Funktionen mitbringt und dazu noch eine sehr aktive Entwicklergemeinde hat ist es auch aufgrund seiner großen Verbreitung meiner Meinung nach die erste Wahl für „Neueinsteiger“ auf diesem Gebiet.

Installation

Wir können uns die Installation und Konfiguration des Subversion-Servers sehr vereinfachen seit die Firma VisualSVN Ltd. ein ebenfalls kostenlos erhältliches Installationspaket geschnürt hat unter dem Namen VisualSVN-Server. Mit der aktuellen Version 1.5.2, die im Download lediglich 5 MB umfasst, wird sowohl Subversion in der neuesten stabilen Version 1.5.1 installiert als auch ein auf das allernötigste reduzierter Apache-Webserver für den Zugriff und eine selbstprogrammierte Verwaltungskonsole.

VisualSVN Server 1.5.2 Setup Nach dem Herunterladen des Pakets von der Website des Anbieters starten wir die Installation wofür administrative Rechte notwendig sind. Es wird nach dem Speicherort für das Programm und anschließend für den der Repositories gefragt. Unter einem Repository versteht man eine art Datenbank, in der alle zu einem Projekt gehörenden Dateien zusammengefasst und verwaltet werden. Zwar kann man auch in einem einzelnen Repository alle Projekte in einem eigenen Verzeichnis ablegen, hier kommt man jedoch schnell mit den Versionsnummern durcheinander da diese für das gesamte Repository gezählt werden. Der Speicherort der Repositories sollte genügend freien Speicherplatz bieten und kann auch auf einer anderen Festplatte sein. Zuletzt wählt man noch den zu verwendenden Port für den Webserver aus und ob eine verschlüsselte oder unverschlüsselte Verbindung verwendet werden soll. Da Ports nicht mehrfach belegt werden können sollte man hier nicht den Port 80 (unverschlüsselte Verbindung) bzw. 443 (SSL-Verschlüsselte Verbindung) verwenden wenn man zusätzlich bereits einen anderen Webserver lokal installiert hat (bsp. den IIS). Oft wird deshalb der Port 8080 oder auch 8443 verwendet (Da beides beliebte Ausweichmöglichkeiten auch bei anderen Programmen wie bestimmten Proxies oder auch PLESK sind da leicht zu merken sollte man bereits im Vorfeld prüfen welcher Port für den Subversion-Server noch zur Verfügung steht). Die Verwendung einer verschlüsselten Verbindung ist in jedem Fall zu empfehlen wenn der Server auch über ein Netzwerk (LAN oder auch Internet) erreichbar sein wird. Ein entsprechendes SSL-Zertifikat wird vom Installationsprogramm automatisch erstellt und eingerichtet. Ist der Subversion-Server nur vom lokalen Rechner aus erreichbar kann man sich das jedoch auch ersparen.

Hat man diese wenigen Schritte hinter sich gebracht wird der eigentliche Kopiervorgang gestartet und einen kurzen Moment später ist der Subversion-Server auch schon fertig installiert und betriebsfertig. Der eigentliche Server läuft im Hintergrund als Dienst, der ebenfalls eingerichtete Apache-Webserver vereinfacht den Zugriff auf die Repositories und läuft ebenfalls als Dienst.

Unser erstes Repository

Computerverwaltung Wir finden den VisualSVN Server Manager als weiteres MMC-Addin in der Computerverwaltung und starten es. Im Übersichtsfenster sehen wir nun den Status des Servers, wieviele Benutzer existieren und wieviele Repositories. Wir klicken auf den Link „Create new repository…“ und werden aufgefordert einen Namen zu vergeben. Webbrowser mit RepositoryDa wir diesen Namen auch beim Zugriff über den Webserver brauchen sollten Leer- und Sonderzeichen möglichst vermieden und stattdessen beispielsweise auf camelCase zurückgegriffen werden. Nach dem Bestätigen des Namens wird das Repository automatisch angelegt und im Server Manager ausgewählt. Somit ist unser Repository bereits fertig erstellt und kann nun über den mitinstallierten Webserver aufgerufen werden. Für den Zugriff auf das Repository gibt es verschiedene Tools, das wohl bekannteste ist TortoiseSVN, dass sich in den Windows-Explorer integriert.

Benutzer und Gruppen

Im Moment sind unsere Repositories noch für jeden einzusehen und – was noch schlimmer ist – auch für jeden änderbar. Was also noch fehlt ist eine Zugangskontrolle in Form eines Logins. Hier bietet uns der VisualSVN Server grundsätzlich zwei verschiedene Möglichkeiten an: Eine Authentifizierung mittels in Subversion verwalteter Benutzer und Gruppen oder aber die Verwendung der bereits in Windows angelegten Benutzer und Gruppen. In größeren Arbeitsgruppen ist letzteres am sinnvollsten, da über die einzelnen Windows-Benutzer auch andere Zugriffsrechte auf die Server verwaltet werden. Bei unserem lokalen Server sollen uns aber die Subversion-Benutzer ausreichen.

Bei der Installation wurde man im gleichen Dialog wie bei der Auswahl des Ports auch nach der gewünschten Authentifizierungsmethode gefragt. Möchte man diese noch mal ändern oder auch den Server Port oder das Verzeichnis für die Repositories so klickt man auf der linken Seite im Baumverzeichnis den VisualSVN Server rechts an und wählt „Properties“.

Create new User Um das Beispiel ein wenig anschaulicher zu machen denken wir uns folgendes Szenario: Unser Projekt „Hello World“ wird von einem Programmierer Paul entwickelt und von einem Designer David. Außerdem haben wir noch eine kleine QS-Abteilung mit den beiden Testern Tim und Struppi. Zunächst müssen wir für jeden dieser Mitarbeiter einen eigenen Benutzeraccount in unserem Server anlegen. Hierfür klicken wir in der Baumstruktur auf den Ordner „Users“ mit der rechten Maustaste und wählen den obersten Punkt „Create User…“ aus. Es öffnet sich ein kleines Fenster in das wir den gewünschten Benutzernamen und das Passwort eingeben. Die Groß- und Kleinschreibung wird hier im Gegensatz zur Windowsanmeldung auch für den Benutzernamen beachtet! Wir erstellen hier also nacheinander unsere 4 Benutzer (Paul, David, Tim, Struppi). Um uns die Zuordnung der Rechte zu vereinfachen kann man noch zusätzliche Benutzergruppen anlegen denen man dann einzelne Benutzer zuweist. Beim Einstellen der Rechte für die Repositories kann man dann einfach einer kompletten Gruppe beispielsweise Schreib- und Leserechte einräumen ohne alle zu dieser Gruppe gehörigen Benutzer einzeln zu konfigurieren. Das hat vor allem dann Vorteile wenn wir einen neuen Programmierer Billy einstellen der nun ebenfalls die entsprechenden Rechte benötigt. Statt nun alle Repositories einzeln durchzugehen kann man Billy einfach in eine passende Benutzergruppe hinzufügen und er hat automatisch alle Rechte die dieser Gruppe zugeordnet wurden.

Create new Group Das Erstellen einer Gruppe geht im Prinzip genau so schnell vonstatten wie das Erstellen eines neuen Benutzers. Wir klicken zunächst in der Baumstruktur mit der rechten Maustaste auf den Ordner „Groups“ und wählen den obersten Menüpunkt „Create Group…“ aus. In dem sich öffnenden Fenster geben wir oben zunächst den Namen der Gruppe ein, zum Beispiel „Development“. Um nun Benutzer zu dieser Gruppe hinzuzufügen klickt man unten auf den Button „Add…“ und wählt aus der Liste nacheinander die gewünschten Benutzer aus. Auch bereits existierende Gruppen können hier hinzugefügt werden. So könnte man in unserem Beispiel zunächst eine Gruppe „Programmierer“ und eine Gruppe „Designer“ anlegen und dann diese beiden Gruppen schließlich zum „Development“ hinzufügen. Es lassen sich somit auch komplexere Strukturen in der Benutzerverwaltung abbilden wobei man es hier natürliich wie überall auch übertreiben kann. Erstellen wir also einfach noch eine zweite Gruppe „QS“ und fügen unsere Tester Tim und Struppi hinzu.

Rechtevergabe für das Repository Fehlt jetzt also nur noch die Zuweisung entsprechender Rechte: Wir klicken unser Repository „HelloWorld“ mit der rechten Maustaste an und wählen die „Properties…“ aus. Auf der ersten Registerkarte „Security“ finden wir standartmäßig den Gruppennamen „Everyone“. Da wir unser Repository nicht-öffentlich setzen wollen klicken wir zunächst diese Gruppe an und wählen dann im unteren Teil des Dialogs „No Access“ aus. Die entsprechende Rechteangabe sollte sich nun in der oberen Liste entsprechend angepasst haben. Ein kleiner roter Stern beim Icon der Gruppe zeigt uns an, dass die Standarteinstellungen verändert wurden. Diese kann man im übrigen festlegen wenn man die Rechte nicht für ein einzelnes Repository festlegt sondern für den übergeordneten Zweig „Repositories“. Fügen wir nun aber erst mal mit dem Button „Add…“ unsere Gruppe „Development“ hinzu. Standartmäßig erhalten neu hinzugefügte Gruppen automatisch Schreib- und Leserechte, was in diesem Fall auch beabsichtigt ist. Als weitere Gruppe fügen wir noch „QS“ hinzu, ändern bei dieser Gruppe aber die Rechte auf „Read Only“, da diese nur den aktuellen Entwicklungsstand einsehen aber nicht verändern sollen. Wurde alles richtig konfiguriert sollten die Eigenschaften nun so ähnlich aussehen wir im nebenstehenden Bild.

Übernahme bestehender Repositories

Wer bereits einen Subversion-Server per Hand eingerichtet hat und gerne auf die Verwaltungsoberfläche des VisualSVN-Servers zurückgreifen möchte der kann mit nur wenigen Mausklicks seine bereits existierenden Repositories importieren. Wir klicken hierfür auf den übergeordneten Zweig „Repositories“ und wählen im Kontextmenü den Punkt „Alle AufgabenImport Existing Repository“ aus. Es öffnet sich eine kleine Dialogbox in der wir lediglich den Pfad zum bereits existierenden Repository auswählen und darunter dann einen (neuen) Namen eingeben. Der VisualSVN Server legt ein neues Repository unter diesem Namen in seinem eigenen Verzeichnis an und kopiert die Daten vom alten Speicherort herüber. Anschließend kann man das Repository wie jedes andere auch über die Oberfläche verwalten. Hat der Import fehlerfrei funktioniert kann man das alte Repository auch löschen um Speicherplatz freizugeben.

Questions/Suggestions
As always, for questions or feedback, contact me or leave a comment.

Octocat by GitHubEdit this page on GitHub