In einem vorangegangen HowTo wird gezeigt, wie man Subversion + SSH in Easyeclipse nutzen kann und Repositorys einbindet. Der nächste Schritt ist naheliegend: nämlich eigene Drupalprojekte in Eclipse entwickeln und mittels Subversion organisieren und updaten. In diesem HowTo wurde Debian Lenny als Subversion Server (1.5.1) und Web-Server + WebDAV eingesetzt. Der Client besteht aus Ubuntu 9.10 Karmic Koala und Easyeclipse for PHP 1.2.2.2
Die Idee ist folgende:
Auf einem Server liegen die Repositorys und auf verschiedenen anderen die jeweiligen Produktivsysteme. Wird von einem Client ein Update committed, dann sollen die Änderungen vom aktualisierten Repository direkt in die Produktivumgebung geschickt werden. So eine Konfiguration ist allerdings nur dann ratsam, wenn man die Änderungen vor dem Committen ausgiebig testet und/oder das Live-System nicht unbedingt hochverfügbar sein soll und keine sensiblen Daten beinhaltet (wäre z.B. diese Webseite 15min nicht erreichbar, ist das zwar unschön, aber letztlich doch egal).
Grafisch dargestellt:

Für jedes Drupalprojekt wird also ein einzelnens Repository angelegt. Dort wird jeweils aber nur die Basic Drupal Installation hinterlegt und die Ordner sites/all/modules und sites/all/themes erzeugt. Zusätzlich legen wir die projektübergreifenden Respositorys Module, Eigene Module und Themes an. In Module kommen alle verwendeten zusätzlichen Module hinein, die wir von drupal.org verwenden bzw. von denen man nicht selbst Maintainer ist. Eigene Module beinhaltet alle Eigenentwicklungen und Themes die selbst erstellten Themes.
Die Projekt-Repos werden schließlich mit den nötigen Modulen und Themes verknüpft.

Fangen wir also damit an, die einzelnen Repositorys anzulegen:
mkdir /pfad/zu/svn/mindforg svnadmin create /pfad/zu/svn/mindforg/ cd /tmp wget http://ftp.drupal.org/files/projects/drupal-6.14.tar.gz tar -xzvvf drupal-6.14.tar.gz mkdir -p drupal/branches mkdir drupal/tags mkdir drupal/trunk mv drupal-6.14/* drupal/trunk/ mv drupal-6.14/.htaccess drupal/trunk/ mkdir drupal/trunk/sites/all/modules mkdir drupal/trunk/sites/all/themes
Bevor wir Drupal in das Repository integrieren, muss die sites/default/settings.php angepasst werden und der Zugriff mittels WebDAV durch unauthorisierte Personen verhindert werden. Dazu fügen wir der Datei /etc/apache2/mods-available/dav_svn.conf folgende Zeilen hinzu: (je nach Anforderung kann auch ein anderer Authorisierungsmechanismus gewählt werden, das ist aber ein anderes Kapitel und Hilfe findet sich im Netz genügend)
<Location /svn/mindforg>
DAV svn
SVNPath /pfad/zu/svn/mindforg
AuthType Basic
AuthName "mindforg Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>
dav_svn.passwd erzeugen:
htpasswd -c /etc/apache2/dav_svn.passwd username
und anschließend die Konfiguration neu laden
/etc/init.d/apache2 force-reload
Jetzt kann das Projekt importiert werden:
svn import /tmp/drupal/ file:///pfad/zu/svn/mindforg -m "initialer Import"
Zum überprüfen schauen wir mal hinein:
svn list file:///pfad/zu/svn/mindforg/trunk
Das selbe Spiel wiederholen wir für Module und Themes:
mkdir -p module/branches mkdir module/tags mkdir module/trunk wget http://ftp.drupal.org/files/projects/views-6.x-2.7.tar.gz tar -xzvvf views-6.x-2.7.tar.gz mv views module/trunk/ mkdir /pfad/zu/svn/module svnadmin create /pfad/zu/svn/module svn import /tmp/module/ file:///var/local/svn/module/ -m "initialer Import"
Wenn man anderen nicht zeigen möchte, welche Module man einsetzt, dann muss auch für dieses Repository ein Eintag in /etc/apache2/mods-available/dav_svn.conf angelegt werden. Weitere Module können auch im Nachhinein nach dem selben Muster importiert werden:
wget http://ftp.drupal.org/files/projects/cck-6.x-2.6.tar.gz tar -xzvvf cck-6.x-2.6.tar.gz mkdir foo mv cck foo/ svn import /tmp/foo/ file:///var/local/svn/module/trunk -m "adding cck"
Mit den eigenen Modulen und den Themes ist es genau das selbe Spiel, braucht also nicht nochmal wiederholt werden.
Soooo, jetzt haben wir also unsere Repositorys angelegt und müssen diese miteinander verknüpfen. Zuerst verbinden wir uns mit dem Projekt Repository wie schon hier beschrieben. Wenn das funktioniert, dann erstellen wir eine lokale Arbeitskopie als PHP-Project. Danach werden wir der Reihe nach dem sites/all/modules und dem sites/all/themes Ordner das Property svn:externals geben, welche an entsprechender Stelle ein externes Repository einbindet.



Um die Module nachzuladen, müssen wir unsere Änderungen committen und dann unsere Arbheitskopie (Checkout) aktualisieren. Davor sollten wir aber noch verhindern, dass die von Eclipse angelegte .project mit ins Repository kommt. Unterscheidet sich die lokale settings.php von der auf dem Liveserver, sollte für sie dasselbe gemacht werden.




Prima, das wäre also geschafft! Wie das Live-Verzeichnis automatisch beim comitten aktualisiert wird, ist auf cplinux.de beschrieben. Bisher habe ich das noch nicht zum Laufen bekommen, wird aber bei Erfolg noch ergänzt :)
Kommentar hinzufügen