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].
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).
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.
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.
Bitte beachte unsere Community-Richtlinien
Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.
Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.
Dein t3n-Team