Notizen dazu wie man eine laufende PHP Anwendung zur Weiterentwicklung in Subversion importiert. Hier am Beispiel von ILIAS.
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.
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
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
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
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.
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.