Repo split across public/private networks
From: Adams, Brian M <briadam_at_sandia.gov>
Date: Wed, 8 Sep 2010 00:22:11 -0600
I have a project whose subversion repository needs to be split across networks and I'm seeking ideas for how to best manage this. There are mailing list posts addressing public/private on the same server, but I didn't find much relevant to cross-network...
While the core of the project can be in an svn repo hosted on a public network, some components must be retained in an svn repo hosted on a private network, inaccessible from the public one. While developers on the public side need only work with public content, developers on the private side want the private content to augment the public content as seamlessly as possible. A few possible ideas:
1. As the project already manages all it's third-party libraries with svn externals, we could create core repos on public and private sides, then meta-packages on the respective networks, composed primarily of externals which pick up the right pieces to assemble the public or private version of the software. For example if the repos were laid out as
2. We could revert to script-based management of our version control process on the private network, for example, notionally: (1) svn co public/project/core project/core; (2) cd project/local && get_private_repo_parts.sh, which could augment the repo with the necessary private components. This defeats some of the appeal of using externals and would probably require private developers to have a set of utilities to wrap svn commands to make sure the private parts of the project/ directory get traversed when doing any svn command. That said, it's probably far simpler than (1) and I suspect is how other projects with various levels of publicity might manage their releases.
3. (Not possible to my knowledge) Notionally, the best way to manage this might be for the public repo to contain "optional externals" which point to the private repo. In this scenario, developers on both networks would just svn co public/project and for public users, those externals pointing to the unreachable private network would timeout or could be disabled at checkout time with a command line switch, whereas users on the private network would get all parts. I don't think this possible with current subversion capability, but perhaps I'm wrong. It's the closest concept to the way we'd organize the repo in any case.
What other subversion features or approaches might I consider?
Thanks,
|
This is an archived mail posted to the Subversion Users mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.