====== Einpflegen eines Projekts in Subversion ====== Notizen dazu wie man eine laufende PHP Anwendung zur Weiterentwicklung in Subversion importiert. Hier am Beispiel von [[http://www.ilias.de|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.