[Drupal HowTo] Projekte mit Subversion verwalten und mit Eclipse entwickeln

Verfasst von haggis am Mi, 11.11.2009 - 14:44

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

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a>
  • Zeilen und Absätze werden automatisch erzeugt.

Weitere Informationen über Formatierungsoptionen

CAPTCHA
Diese Frage dient dazu festzustellen, ob Sie ein Mensch sind und um automatisierte SPAM-Beiträge zu verhindern.
    _   _____         _____          _____ 
(_) |___ | ___ |___ | ___ | ___|
| | / / / __| / / / __| | |_
| | / / \__ \ / / | (__ | _|
_/ | /_/ |___/ /_/ \___| |_|
|__/
Enter the code depicted in ASCII art style.