Einpflegen eines Projekts in Subversion

Notizen dazu wie man eine laufende PHP Anwendung zur Weiterentwicklung in Subversion importiert. Hier am Beispiel von ILIAS.

Schritt 1: Kopie erstellen

Wir befinden uns in “htdocs”, ILIAS liegt in “htdocs/ilias3”.

Kopie erstellen:

cp -rp ilias3 ilias3.svn

Jetzt haben wir im Verzeichnis ilias3.svn eine Kopie der aktuellen ILIAS Installation.

Schritt 2: Kopie für den Import vorbereiten

Diese Kopie muss “bereinigt” werden, d.h. alle Dinge die nicht ins Subversion sollen müssen gelöscht werden.

Wir wollen z.B. im Subversion keine Daten von den Clients.

rm -rf ilias3.svn/data
rm -f ilias3.svn/ilias.log

Außerdem müssen Dateien die wir ins Subversion legen wollen und die in der laufenden Installation aber angepasst werden (z.B. Config Dateien) umbenannt werden.

mv ilias3.svn/ilias.ini.php ilias3.svn/ilias.ini.php.sample

Jetzt nicht vergessen aus dieser Datei die eingetragenen sensiblen Informationen (Passwörter, hier: Setup Passwort) entfernen.

Jetzt noch eine FHDO eigene Config Datei umbenennen:

mv ilias3.svn/Services/Registration/studiengaenge.db.php ilias3.svn/Services/Registration/studiengaenge.db.php.sample

Auch aus der studiengaenge.db.php.sample bitte entsprechend sensible Daten löschen.

Zusatzpakete die nicht zur Stamm Software gehören und die wir nicht anpassen und unbedingt im SVN haben müssen entfernen (Hier Beispiel: jsMath).

rm -rf ilias3.svn/Services/JavaScript/jsMath

Schritt 3: Bereinigte Kopie ins SVN importieren

Import starten, hier wird der Benutzername und Passwort für SVN benötigt. Wir importieren die aktuelle Version als “trunk” unsere Entwicklungsversion.

svn import ilias3.svn https://svn.rocho.org/svn/ilias-fh/trunk

Sobald der Import erfolgreich abgeschlossen ist können wir unser ilias3.svn löschen

rm -rf ilias3.svn

Schritt 4: Aktuelle Branch erstellen

Damit man nicht ständig aus dem “trunk” importieren muss sollte man sich eine Branch der aktuellen Produktiv Version erstellen. Das hat auch den Vorteil, dass man Tests und nicht stabilen Code in den “trunk” importieren kann.

Falls auf dem Subversion Server noch kein “branches” Verzeichnis existiert muss dieses zuerst erstellt werden:

svn mkdir https://svn.rocho.org/svn/ilias-fh/branches

Anschließend wird eine Kopie des “trunk” angelegt:

svn copy https://svn.rocho.org/svn/ilias-fh/trunk https://svn.rocho.org/svn/ilias-fh/branches/Release_3.10.x_Branch_FH

Schritt 5: Branch für Produktivbetrieb vorbereiten

Um zu sehen, ob auch wirklich alles importiert wurde können wir uns jetzt die eben durch Kopie des “trunks” erzeugte Branch runter:

svn co https://svn.rocho.org/svn/ilias-fh/branches/Release_3.10.x_Branch_FH ilias3.svn

Jetzt haben wir die aktuelle Branch in “ilias3.svn”

Wir erstellen nun eine Datei “ignore.txt” in htdocs mit folgendem Inhalt:

ilias.ini.php
data
ilias.log
.htaccess

Jetzt wechselt man in “ilias3.svn”:

cd ilias3.svn

Und informieren ILIAS darüber, dass es alle Dateien in “ignore.txt” im Subversion ignorieren soll.

svn propset svn:ignore -F ../ignore.txt .

Zusätzlich müssen wir noch zwei anderen Dinge in Unterverzeichnissen ignorieren:

cd Services/JavaScript
svn propset svn:ignore jsMath .
cd ../Registration
svn propset svn:ignore studiengaenge.db.php .
cd ../../..

Jetzt werden alle Dateien/Verzeichnisse die nicht per SVN abgeglichen werden sollen ignoriert. Nun können wir die Config Dateien und Datenverzeichnisse in unserer laufenden ILIAS Version in die lokale Branch kopieren.

cp -p ilias3/ilias.ini.php ilias3.svn
cp -p ilias3/ilias.log ilias3.svn
cp -rp ilias3/data ilias3.svn/data
cp -rp ilias3/Services/JavaScript/jsMath ilias3.svn/Services/JavaScript/jsMath
cp -p ilias3/Services/Registration/studiengaenge.db.php ilias3.svn/Services/Registration

Jetzt sollte unsere lokale Kopie des Branch bereit sein für den produktiven Betrieb.

Schritt 6: Testen und freischalten

Zur Sicherheit und Test führen wir nochmal ein Update durch:

cd ilias3.svn
svn update
cd ..

Wenn das alles glatt läuft und die eben kopierten Dateien nicht auf den Subversion Server übertragen werden können wir unser lokale Branch Kopie in die Produktivversion umwandeln.

mv ilias3 ilias3.nosvn;mv ilias3.svn ilias3

Zur Sicherheit haben wir jetzt unter ilias3.nosvn noch den Stand vor der Umstellung.

Ab jetzt können wir einfach im ilias3 Verzeichnis ein “svn update” durchführen und bekommen immer die aktuelle Version vom Subversion Server geliefert.