I work for a large bureaucratic (and security paranoid) organisation that provides SVN for its development teams to use.
I am working with a 3rd party vendor (at their site) and we currently share code via SVN export and patch files. The only way I have for transferring files is by a FTP drop box or email. I would like a better way to work.
I am currently lobbying to get some kind of DCVS system setup, ideally cloud hosted. Failing that I want a better way to manage keeping SVN repositories in sync.
In the meantime (or if I fail to get DCVS) how do I keep two SVN repositories in sync?
How do I best manage exporting the repository?
How do I manage incoming changes?
8
The easiest way, if you have the money a bureaucratic and security paranoid org has, is to go to WanDisco and buy their product and time. SVN always had the ability to sync changes (its great for per-commit backups) but wandisco added the ability to do master-master syncs too, so you can have a fully distributed SVN setup.
Running a DVCS setup on the cloud will not get past your paranoid security team, not by a long chalk. Setting a DVCS up for them will probably be difficult too when they realise there is no central server to hold the definitive sources.
You may still have to manage the SVN system as it is – often, 3rd parties do not get direct access to the repo at all. This is for security reasons more than anything and shows you don’t 100% trust the other team – which is common, often you won’t even know who they are. SVN does have a lot of access controls you can apply to a repo, and I would recommend setting up a repo just for them to commit to, then merge their changes to the in-house repo, which should be a lot easier than ftp patchsets.
1
Easiest way, if you have location,from which both repos (organisation’s and vendor’s) are reachable by svn-client is
Create local repository, in this repo map two any nodes to the external repositories (via svn:externals)
If you worry about only content, you can periodically perform sync-merge from Vendor Branch to Organisation Branch (merge transfer all changes from all newest revisions). If both content and history are important, you can perform cherry-pick merge (one revision per merge).
Merged to Organisation Branch (from your POV) and committed will appear in organisation’s repository as natural commit
The SVK decentralized version control system uses the Subversion filesystem.
SVK can mirror and operate on Subversion repositories.
2