Installing products from Subversion

Description

Sometimes Plone products are not eggified, but available only in Subversion version control repository. This how to tells how such product can be automatically installed in buildout installations.

A few buildout recipes provide direct version control checkout functionality:

  • plone.recipe.bundlecheckout - recipe provides Subversion (and CVS) downloads. Always does checkout - not suitable if you change files.
  • mr.developer - a zc.buildout extension which makes it easier to work with buildouts containing lots of packages of which you only want to develop some.
  • infrae.subversion - can do SVN update

In this example we use the later.

Step by step

Add the infrae.buildout recipe to your buildout.cfg. Adding a recipe means adding a new line to [buildout] parts=...myrecipename at the beginning of the file and then later a corresponding [mypartname] recipe = xxx.yyy section.

[buildout]

parts =

    plone
    zope2
    productdistros
    svnproducts
    instance
    zopepy
    zopeskel

List all the URLs of the products you want in svnproducts section. In the example below we checkout TickingMachine product.

# Get TickingMachine directly from SVN since it's not eggified

[svnproducts]
recipe = infrae.subversion

urls =
    http://tickingmachine.googlecode.com/svn/trunk TickingMachine

In the case you're installing an old product (not eggified) you will also need to register it in the [products] section so that they get added to your Python path:

products =
    ${buildout:directory}/products
    ${productdistros:location}
    ${plone:products}
    ${svnproducts:location

After rerunning buildout, TickingMachine will be found under parts/development-products folder.

Further information

Certification errors and passwords

Self-signed certificates are often used with Subversion repositories. Since infrae.subversion is made for automatization, it cannot accept security decisions for the user. So if you are receiving certification validation errors and password prompts, please access the Subversion repository first manually using svn command. Accept the choice and the svn client will remember this in your user account home folder. It is recommended not to use your commit account for this, since storing passwords is insecure.

Here's an example about how to access a SVN repository using the svn ls command and accepting the security decisions for the svn client to remember them permanently:

 svn ls   https://svn.plone.org/svn/collective/collective.easytemplate/trunk
Error validating server certificate for 'https://svn.plone.org:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: *.plone.org
 - Valid: from Mon, 14 Jan 2008 08:35:24 GMT until Wed, 13 Jan 2010 08:35:24 GMT
 - Issuer: Plone Foundation, Houston, Texas, US
 - Fingerprint: 39:6e:42:08:44:65:aa:7b:cb:55:85:9a:0c:0c:13:95:16:aa:38:48

(R)eject, accept (t)emporarily or accept (p)ermanently? p