7.13 Ein Rails-Projekt in Subversion überführen 

Repository
Versionsverwaltung wird in der Softwareentwicklung nicht nur zur Versionierung eingesetzt, sondern auch, um den gemeinsamen Zugriff mehrerer Programmierer auf den Quelltext der einzelnen Dateien zu steuern. Das heißt, das Versionsverwaltungs-Tool erfasst alle Änderungen an den Dateien mit Zeitstempel und Benutzerkennung und verwaltet sie im sogenannten Repository . So wird gewährleistet, dass jeder mit dem aktuellen Stand arbeitet, bei Bedarf aber jederzeit auch auf einen älteren Stand zurückgreifen kann.
Die Versionsverwaltung bietet für die Softwareentwicklung folgende Vorteile:
- Protokollierung der Änderungen:
Jeder kann jederzeit nachvollziehen, wer für welche Änderung verantwortlich ist und wann die Änderung vorgenommen wurde.
- Wiederherstellung älterer Versionen:
Versehentliche Änderungen können so wieder rückgängig gemacht werden.
- Koordinierung des gemeinsamen Zugriffs:
Beim Update wird kontrolliert, ob es in der lokalen Arbeitskopie eine Version dieser Datei gibt, die noch nicht in das System übertragen und im gleichen Bereich geändert wurde. Wenn ja, macht das System darauf aufmerksam. Diese sogenannten Konflikte müssen manuell gelöst werden.
- Archivierung von Releaseständen (Tags):
Fertiggestellte Releases können als Gesamtheit archiviert und somit immer wieder geladen werden.
- Entwicklung mehrerer Entwicklungszweige (Branches):
Durch das Auslagern in einen Entwicklungszweig kann gleichzeitig an mehreren Releaseversionen gearbeitet werden. Beim Zusammenführen mit der Hauptversion unterstützt das System die Entwickler.
SVN
Wir setzen für unsere Projekte die Versionsverwaltung Subversion (SVN) ein. Voraussetzung, um SVN nutzen zu können, ist ein SVN-Repository auf Ihrem Server. Im Abschnitt 18.2.4 wird gezeigt, wie ein Subversion-Repository auf einem Server installiert wird.
Ein Rails-Projekt in Subversion importieren 

Nehmen wir an, Sie möchten ein Rails-Projekt mit dem Namen railsair erstellen und in Subversion importieren:
Wir erstellen das Projekt in einem temporären Verzeichnis (tmp_svn).
mkdir tmp_svn cd tmp_svn # Nur wenn Projekt noch nicht erstellt worden ist. rails railsair
Falls Sie bereits vorher das Rails-Projekt generiert haben (siehe Kapitel »Test-Driven Development«), so verschieben Sie einfach Ihr Projekt in das temporäre Verzeichnis tmp_svn.
Verzeichnis- struktur
In Subversion ist es üblich, dass die Projekte folgende Verzeichnisstruktur besitzen:
- Trunk (dt. Stamm):
Hier befindet sich Ihr Rails-Projekt in der aktuellen Version. - Tags (dt. Markierung):
Hier befinden sich ältere, in sich abgeschlossene Versionen Ihres Projekts, die mit einem Namen gekennzeichnet sind (Releases, zum Beispiel: version_1.0.4) - Branches (dt. Verzweigungen):
Hier werden alternative Entwicklungspfade Ihres Projektes verwaltet.
Wir werden die Verzeichnisse branches und tags anlegen und das Verzeichnis des Rails-Projektes in trunk umbenennen:
mkdir branches mkdir tags mv railsair trunk
Bevor wir das Projekt in das Repository einchecken, löschen bzw. leeren wir überflüssige Log- und tmp -Dateien, da diese nicht im Repository benötigt werden. Dazu können wir die Rake-Tasks rake tmp:clear und rake log:clear verwenden:
cd trunk rake tmp:clear rake log:clear
svn import
Wir können nun mit dem Befehl svn import unser Projekt in das Repository überführen. Wechseln Sie dazu in das Verzeichnis tmp_svn (überprüfen Sie, ob Sie beim Ausführen des Befehls ls keine Fehlermeldung erhalten), und verwenden Sie den Befehl svn import, um das Projekt in das Subversion-Repository zu überführen.
cd .. ls branches tags trunk svn import url_des_repository -m 'Import des Railsprojekts'
Die URL des Repository kann z. B. wie folgt aussehen:
- http://domain/railsair
- https://domain/railsair
- svn+ssh://deploy@domain/srv/svn/railsair
Wenn Sie keine Fehlermeldung erhalten, können Sie das Verzeichnis tmp_svn löschen. Wir empfehlen jedoch, damit zu warten, bis der erste Check-out des Projektes aus dem Repository erfolgreich war.
Ein Rails-Projekt aus Subversion auschecken 

svn checkout
Wechseln Sie in das Verzeichnis, in dem Ihr Rails-Projekt liegen soll, und verwenden Sie den Subversion-Befehl svn checkout, um das Projekt auszuchecken. Achten Sie darauf, dass Sie das trunk -Verzeichnis angeben, da sich dort unsere Projektdateien befinden. Anschließend wechseln Sie in das Projektverzeichnis.
cd ~/railsprojekte svn checkout url_des_repository/trunk railsair cd railsair
Ignorieren von Dateien 

svn propset svn:ignore
Damit geänderte oder neue Dateien aus dem tmp - und log -Verzeichnis nicht in das Repository übertragen werden, müssen wir Subversion mitteilen, dass diese ignoriert werden sollen:
svn propset svn:ignore '*.log' log svn propset svn:ignore '*' tmp/cache svn propset svn:ignore '*' tmp/pids svn propset svn:ignore '*' tmp/sessions svn propset svn:ignore '*' tmp/sockets
Wenn Sie SQLite3-Datenbanken verwenden, können Sie die Dateien db/*.sqlite3 ignorieren, da diese in der Regel nur temporär zur Entwicklung benötigt werden. Auf dem Server wird meistens MySQL, PostgreSQL oder ein anderes Datenbanksystem verwendet.
svn propset svn:ignore '*.sqlite3' db
Zuletzt können Sie noch einige Dateien bzw. Verzeichnisse im Verzeichnis doc ignorieren.
Da diese sich gemeinsam mit nicht zu ignorierenden Dateien im selben Verzeichnis befinden, müssen Sie hier etwas anders vorgehen. Wir verwenden den Befehl svn probedit, der ein
Editor-Fenster (in der Regel der vi-Editor) öffnet, in dem Sie pro Zeile eine zu ignorierende Datei angeben können.
svn propedit svn:ignore doc # folgende Zeilen im Editor eingeben # (im VI-Editor i eingeben zum Starten der Eingabe) app api # anschließend speichern und Editor verlassen # (ESC :wq beim VI-Editor)
svn commit
Mit dem Befehl svn commit übertragen wir diese Änderungen in das Subversion-Repository:
svn commit -m "ignoriere Dateien"
Über den Parameter -m geben wir an, welche Änderungen mit einem commit übertragen wurden. Dadurch ist es uns später immer wieder möglich nachzuvollziehen, was bei dieser Änderung geändert wurde.
Ignorieren der database.yml |
Aus Sicherheitsgründen kann es sinnvoll sein, die Datenbankkonfigurationsdatei database.yml nicht mit in das Repository zu übertragen. Stattdessen können Sie eine Beispieldatei mit dem Namen database.yml.example erstellen und diese übertragen. Da am Anfang die database.yml noch keine geheimen Daten enthält, können Sie diese dafür umbenennen. Außerdem müssen Sie noch festlegen, dass die Datenbankkonfigurationsdatei ignoriert werden soll:
svn mv config/database.yml config/database.yml.example svn propset svn:ignore "database.yml" config/ svm commit config -m "database.yml wird ignoriert." Denken Sie daran, beim Auschecken des Projektes aus dem Subversion-Repository die Datei database.yml wiederherzustellen. Wenn Sie das Projekt mit dem Deployment-Tool Capistrano auf Ihrem Webserver installieren, ist es notwendig, dass ein entsprechender Deploy-Task diesen Vorgang automatisiert durchführt. Siehe Kapitel 18. Ihre MeinungWie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de. |