Versionsverwaltung mit Subversion

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

abgelegt unter:

Note

Dieser Artikel wird nicht mehr zuverlässig aktualisiert, da wir nun alle unsere Projekte auf die verteilten Versionsverwaltungssysteme git oder Mercurial umgestellt haben.

Versionierungskonzepte, Arbeitsabläufe und die Konfiguration des Subversion-Clients etc. finden Sie in meinem Subversion-Handbuch.

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:

    • bootstrap.py
    • buildout.cfg
    • products/
    • 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.

Alternativ kann zum Auschecken des src/-Verzeichnisses auch mr.developer verwendet werden.