Der Einstieg in die Extension „np_subversion“: Versionskontrolle für TYPO3-Projekte
Der vorliegende Artikel richtet sich an den erfahrenen TYPO3-Entwickler, der bereits Kenntnis von der Arbeitsweise und der Terminologie eines
Subversion-Systems hat. Ihm gibt die Extension „np_subversion“ weitreichende Hilfsmittel zur
Verwaltung und Erkennung von Änderungen sowie zur Verteilung von
zentral bereitgestellten Lösungen an die Hand. Eine bestehende Subversion-Infrastruktur mit
mindestens einem Sourcecode-Repository ist allerdings Voraussetzung. Weiterhin benötigt „np_subversion“ auf dem TYPO3-System einen funktionsfähig eingerichteten
Subversion-Kommandozeilen-Client. Dieser steht für nahezu alle
Betriebssysteme zur Verfügung und kann über die Paketverwaltung des
eingesetzten OS oder in Binär- oder Quellcodeform bezogen werden [1]. Grundsätzliche Hilfestellung zur Installation von
Subversion bieten die distributionsspezifischen Anleitungen sowie das
Subversion-Handbuch des Herstellers [2], das auf Deutsch im O’Reilly-Verlag erschienen ist [3].
Konfiguration der Extension
Nach der Installation der Extension aus dem TER (Extension Key: „np_subversion“) müssen einige grundlegende Konfigurationsoptionen gesetzt werden. Sie erlauben die flexible Anpassung der Erweiterung an bestehende Entwicklungsinfrastrukturen. Neben dem Pfad zum ausführbaren Programm „svn“ (Unix) beziehungsweise „svn.exe“ (Windows) werden Angaben zu Konfigurations- und Backupverzeichnissen, zum korrekten Encoding der Commitnachrichten sowie zur gewünschten Art und Dauer der Authentifizierungsdaten-Speicherung erwartet. Eine detaillierte Beschreibung aller Konfigurationsparameter finden Sie im Handbuch zu „np_subversion“.
Tipp: Subversion speichert in der Standardkonfiguration die Authentifizierungsdaten im Homeverzeichnis des ausführenden Benutzers. Dieses Verhalten ist in Multi-User-Umgebungen (in diesem Fall: in allen TYPO3-Instanzen, die im selben Webserverkontext ablaufen) nicht gewünscht und sollte abgestellt werden. Setzen Sie dazu den Pfad zur Subversion-Konfiguration mit dem Parameter „svn_config_dir“ und ergänzen Sie die svn-Konfigurationsdatei um folgende Zeilen:
[auth] store-passwords = no store-auth-creds = no
Listing 1
Auch der Repository-Zugriff über HTTP-Proxies oder SSH-Tunnel, Ausschlussmuster (z. B. für .project-Dateien der Eclipse-IDE) und sonstige Tricks lassen sich über Subversion-Bordmittel in die Gesamtlösung integrieren. Hierzu bietet wiederum das Subversion-Handbuch eine gute Referenz.
Aspekte der Erweiterung des TYPO3-Dateilistenmoduls durch „np_subversion“: |
|
Um gezielt zwischen den Anwendungsfällen „Bereitstellung und Update“ und „versionierte Entwicklung“ zu trennen, definiert „np_subversion“ zwei Typen von Datenbankeinträgen: Repository- und Target-Records. Im „Repository Record“ werden die Basis-URL des Subversion-Servers sowie eventuell ein vordefinierter Benutzerzugang hinterlegt. Für die Verwaltung von Extensions oder beliebiger fileadmin-Unterverzeichnisse werden „Target Records“ erstellt. Dabei muss zwischen Verzeichnissen innerhalb und außerhalb des fileadmin-Astes unterschieden werden, da das Dateilistenmodul standardmäßig keine Zugriffe außerhalb des Verzeichnisses „fileadmin/“ gestattet. „np_subversion“ führt daher eine Funktionsbox mit Zusatzfunktionen für die zutreffenden Subversion-Operationen „checkout“, „export“, „update“ und „commit“ ein (siehe obige Abbildung).
Anwendungsfälle in der Praxis
Deployment von Extensions in Kundenprojekten: Mit „Export Target“ Records für alle eingesetzten Extensions und intelligentem Packaging aller benötigten Ressourcen (Templates, TypoScript, Assets) eignet sich „np_subversion“ sehr gut für die Bereitstellung und das Update fertiger Lösungen in Produktionsumgebungen. Per „svn export“ werden die benötigten Daten aus dem Repository extrahiert, .svn-Metaverzeichnisse werden nicht angelegt. Der Exportvorgang erzeugt optional ein Backup von bestehenden Daten. Eine geschickte Strukturierung des Sourcecode-Repositorys vorausgesetzt, können so auch spezifische Anpassungen für einzelne Kunden (Branches) oder benannte Releases beziehungsweise Bugfixes (Tags) mit minimalem Aufwand verteilt werden.
Verteilte TS-, Markup- und Extension-Entwicklung: Über „Working Copy“ Records, zum Beispiel für das Verzeichnis „fileadmin/templates/“ und die Extensions in „typo3conf/ext/“, kann der komplette Entwicklungsprozess versioniert und flexibel dezentralisiert werden. So wird entweder direkt auf dem Server oder in verteilten Arbeitskopien ohne Versionschaos gearbeitet. „np_subversion“ stellt den Status der versionierten Daten mit den von TortoiseSVN [4] bekannten Dateisymbolen dar und synchronisiert mit wenigen Klicks (update, commit) die getätigte Arbeit.
Durch die Kombination der Methoden zusammen mit einer cleveren Auslagerung der TYPO3-Konfiguration ins Filesystem, wie es zum Beispiel Franz Ripfel in seinem Podcast-Beitrag erläutert [5], lässt sich ein Großteil des Webprojekts transparent verwalten.
Ausblick auf die zukünftige Entwicklung
Ein kontinuierlicher Ausbau der Extension, die hauptverantwortlich vom Softwarearchitekten Bastian Waidelich erstellt wurde, ist vorgesehen. Konkrete Pläne bestehen bereits für etliche Zusatzfunktionen:
- Anzeige der Unterschiede zwischen lokaler Arbeitskopie und der BASE-Revision („svn diff“)
- Anzeige der gegenüber der Arbeitskopie im Repository geänderten Daten („svn status -u“)
- Hooks für die Ausführung von Pre- und Post-Operationsskripten, zum Beispiel für Mail-Notifications oder die Korrektur von Filesystem-Berechtigungen
- weiterführende Integration der Deployment- und Update-Mechanismen mit dem Extension Manager beziehungsweise Install-Tool, zum Beispiel zum automatischen Ausführen von Datenbankstrukturvergleichen bei Änderungen an „ext_tables.sql“
- Wrapperfunktionen für den CLI-Modus
- vollständige Übersetzung des Moduls in alle vorliegenden Backendsprachen
- Prüfung der letzten verbliebenen XCLASSes und gegebenenfalls Ersetzung durch Hooks, die momentan im TYPO3-Kern noch nicht vorhanden sind. Der Kontakt mit den zuständigen Core-Teammitgliedern wird aufgenommen.
Der Extension-Autor freut sich über Verbesserungsvorschläge, Fehlermeldungen, Übersetzungen von Extension und Dokumentation sowie sonstiges Feedback. Auf der Projektseite zu „np_subversion“ (www.network-publishing.org) stellt die Agentur network.publishing eine Plattform dafür bereit.