Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Entwicklungsumgebung Versionsverwaltung mit Subversion

Versionsverwaltung mit Subversion

erstellt von Veit Schiele zuletzt verändert: 01.05.2010 10:25 © Veit Schiele 2007–2009

Mit Subversion lassen sich nicht nur die einzelnen Python-Eggs verwalten, sondern auch das gesamte Buildout-Projekt.

Buildout-Projekt in einem SVN-Repository verwalten

  1. Zunächst wird für das Projekt ein Verzeichnis im Repository angelegt:

    $ svn mkdir https://dev.veit-schiele.de/svn/my_project -m 'Created new project my_project'
    
    Committed revision 1.
    
  2. Anschließend erstellen wir ein Verzeichnis my_project und kopieren in dieses folgende Dateien und Verzeichnisse:

    1. bootstrap.py
    2. buildout.cfg
    3. products/
    4. src/

    Alle anderen Dateien und Verzeichnisse werden automatisch generiert, wenn zunächst bootstrap.py und anschließend ./bin/buildout aufgerufen wird.

  3. Diese Verzeichnisstruktur wird nun in unser Subversion-Repository importiert mit:

    $ svn import my_project https://dev.veit-schiele.de/svn/my_project -m 'Initial import'
    
    Added     bootstrap.py
    Added     buildout.cfg
    Added     products
    Added     src
    
  4. Für das src/- und das products/-Verzeichnis nutzen wir schließlich die Fähigkeit von Subversion, diese mit Arbeitskopien aus anderen Subversion-Repositories füllen zu können. Damit muss das Repository für das Buildout-Projekt nicht bei jeder Änderung an einem der von uns entwickelten Python-Eggs oder Zope2-Produkte aktualisiert werden.

    1. Hierzu wird eine Datei src/EXTERNALS.txt erzeugt, z.B.:

      my.package      https://dev.veit-schiele.de/svn/vs-plone/my.package/trunk/
      …
      

      Dabei wird jedes von uns entwickelte Python-Egg in einem eigenen Repository verwaltet und für unser my_project-Repository ausgecheckt.

    2. Schließlich wird für das src/-Verzeichnis noch folgende SVN-Eigenschaft angegeben:

      $ svn propset svn:externals -F ./src/EXTERNALS.txt ./src/
      
    3. Wollen Sie zu einem späteren Zeitpunkt diese SVN-Eigenschaften wieder in die Datei src/EXTERNALS.txt zurückschreiben, können Sie dies tun mit:

      $ svn propget svn:externals ./src/ > src/EXTERNALS.txt
      
    4. Falls in dem Projekt auch noch herkömmliche Zope2-Produkte erstellt worden sind, können die SVN-Eigenschaften auch analog für products/ vergeben werden.

mr.developer

Alternativ kann zum Auschecken des src/-Verzeichnisses auch mr.developer verwendet werden. mr.developer kann de extensions-Option des [buildout]-Abschnitts hinzugefügt werden. Anschließend können folgende weitere Optionen festegelegt werden:

sources-dir

Das Verzeichnis, in das die Pakete heruntergeladen werden.

Der Standardwert ist src.

sources

Liste der Repository-Informationen der Pakete.

Das Format ist <kind> <url> [path].

kind
svn, hg oder git
url
Die URL des Repository
path

Optionale Angabe des Pfads, in den das Paket ausgecheckt wird.

Wird keine Angabe gemacht, wird sources-dir verwendet.

auto-checkout
Pakete, die beim Aufruf des buildout-Skripts automatisch ausgecheckt werden.

Hier ein Beispiel für einen solchen Eintrag in die buildout.cfg-Datei:

[buildout]
…
extensions = mr.developer
sources = sources
auto-checkout = vs.policy

[sources]
vs.policy = svn https://svn.veit-schiele.de/svn/vs.policy/trunk
some.package = git git://example.com/git/some.package.git

Buildout erzeugt nun ein Skript bin/develop, das verschiedene Aktionen zu den einzelnen Paketen erlaubt, wie z.B. das Auschecken des Quellcodes ohne den Ort des Repositories kennen zu müssen. Für weitere Aktionen geben Sie einfach folgendes ein:

bin/develop help

Wird der Quellcode aus einem Paket ausgecheckt, muss buildout erneut durchlaufen werden. Das Paket wird dann automatisch als develop egg markiert, und falls es in der Liste der versions-Option festgeschrieben wurde wird dieser Eintrag gelöscht und das develop egg verwendet.

Die Liste der develop eggs kann mit den activate- und deactivate-Kommandos von bin/develop gesteuert werden.

Artikelaktionen