svn_bundle makes the access to linked subversion repositories - via svn:externals - more flexible. It also provides useful scripts to ease deployment of bundled source or library packages made amongst others by linked/external subversion repositories.
A convenient access of 'local' repositories in a multi-operating system environment is provided by subversion with the ra_local access plugin, but normally changes to svn:external properties are only consistent, if made only from one operating system. The extension in svn_bundle is beneficial if you wants to share various source projects or libraries in a team that is working in a heterogenous network environment on the basis of file services, i.e. if you need or want to use ra_local connections (e.g. because this approach may ease rights management).
how this works
A substitute property for svn:externals is introduced (e.g. called local:externals) and gets versioned instead of in a bundle repository. The idea is to store only this property without OS dependant parts of a shared path, e.g. 'REPOSPATH/repos1'. Otherwise you would get new revisions just by switching external paths.
The program svnprop (actually python code, which uses pysvn) sets svn:externals from the template (local:externals) for update actions with the OS-specific part (e.g. 'file:///n:/repos1', 'file:///smbserver/share/repos1', or 'file:///media/nfs/repos1') on the basis of configuration files (uses PyYAML).
Hook scripts for the subversion bundle reposistory and user scripts are currently provided for linux (bash) and windows (cmd). They ensure a consistent and easy operation.
what's missing or evolving
Some items are planned, or are currently not fully working:
- Extensions of svnprop and related convenience scripts for usage and administration.
- The automatic creation of a customized bundle by a make tool is planned.
- Piston is described as 'Remote Repository
Copying' or 'Easy Vendor Branch Management'.