Buildout recipe for checking out from subversion
This zc.buildout recipe will check out a number of URLs into its parts directory. It won’t remove its parts directory if there are any changes in the checkout, so it’s safe to work with that checkout for development.
This is an example buildout part that uses this recipe:
[development-products] recipe = infrae.subversion urls = https://svn.plone.org/svn/collective/PDBDebugMode/trunk PDBDebugMode
This will maintain a working copy of PDBDebugMode in the parts/development-products/PDBDebugMode directory (not in the parts directory itself). Thus, the recipe handles multiple URLs fine.
You can select a different location with location, for instance:
location = src
Will extract PDBDebugMode in src/PDBDebugMode instead of parts.
If you have pysvn installed on the computer, it will be used. This implies better performances.
By default, when buildout update the part, an svn up is done for each link. However, when a revision number is specified like this:
The SVN link is skipped for update. If you want to prevent update for all SVN link of the part even if they do not contain revision number, you can add the following option:
ignore_updates = true
With pysvn installed, you can specify:
export = true
in your buildout part to get an SVN export instead of an SVN checkout.
By default, your checkout are checked against local modification before any uninstallation step. This can take time on large checkouts, and you may don’t want it in some case (like when used on buildbot for instance). To prevent this step, you can use this option:
ignore_verification = true
As well, when the recipe update it can emit some warnings because a directory have been removed. You can suppress that warning with:
no_warnings = true
The verification will still be done, and the directory will be checked out again to replace the missing one.
If you set the option as_eggs in your configuration file, checkouted URLs will be registered as development eggs in your buildout. This only work for non-recipe development eggs.
If you add a new egg, this will trigger a new uninstall-reinstall cycle. You may want to use that option to setup eggs coming from SVN for production, but not for development.
If you set:
export_info = true
Two variables will be exported by this recipe:
- revisions which gives for each URL the corresponding revision number,
- updated which gives a list of URLs which have been updated with new code.
Since values to these variables changes each time you run buildout (revision number changes), this trigger an uninstall/reinstall of the part. We recommand to activate it only if you need it.
Is always exported a variable location to say where are done the checkouts, and a variable eggs which contains a list of checkouted eggs.
For an example buildout that uses this recipe, please see the Silva buildout.
As well, the doctest file can provide more sample.
The latest version is available in a Subversion repository.
- Fix an error when some path have been added to the checkout path. [eric]
- Still eggify and export information on update when running as non-newest mode. [sylvain]
- Add a no_warnings options which remove some warnings when updating a part. [sylvain]
- Add a login callback for people using PySVN. This let users authenticate to an unauthorized svn. Thanks to Martin Stadler (martin at siarp.de) for this fix. [sylvain]
- Automatically ignore .pyc and .pyo files while checking for modified/added/removed files. [sylvain]
- Fix bug so .svn directory is really ignored when checking for added paths in the checkout directory. [sylvain]
- Correct typo in README.txt. [sylvain]
- Ignore .svn directory when checking for added ones at uninstall. [sylvain]
- Added location option that allows you to override the default /parts/partname location. [reinout]
- Added as_eggs option that installs the checkouts as development eggs. [reinout]
- Don’t export revisions information if you’re offline with Py. Py tries to connect to the SVN repository to do a ‘svn info’. [sylvain]
- don’t try to collect export information if you have a svn export. [sylvain]
- path were exported instead of URLs in the Native implementation. [sylvain]
- Remove the restriction to py 0.9.0, now that py 0.9.2 is out and fix problems on svn status with strange userid. [sylvain]
- Correct an error rendering. [sylvain]
- Export information only for top level svn URLs in the native implementation, this used to inject information from svn:externals links included in URL list. [sylvain]
- Add tests for export information feature. [tlotze]
- Correct URL in setup.py [sylvain].
Refactor code, performances should be better at uninstall with Py implementation [sylvain].
Look for the environment variable INFRAE_SUBVERSION_IMPL to select which implementation to use. Possible values are PYSVN (default) and PY [sylvain].
Uninstall only look at directory which have been created by the recipe in the part. Other are just reported [sylvain].
Export two new variables, if export_info is set to true:
Which is lines formatted:
Which is lines containing updated links.
- Add the ignore_verification option [sylvain].
- Base version of the recipe.