Reputation: 313
We currently have a piece of software being developed by an outsource company which is being checked in to an SVN repository on our servers. We will shortly be ending our contrct with them and have brought in a number of developers (myself included) to take over development. We have been provided with a separate SVN repo.
The outsource company is not supposed to see changes commited by our team, but we need to receive changes entered by them. Does anybody know a way we can set up our SVN servers so that their changes get commited to our repository (immediately or daily or whatever) without overwriting our changes. I'd be happy to manually review any merge conflicts as needed.
Any answers would be appreciated, set-ups, batch files or paid for products included.
Upvotes: 1
Views: 118
Reputation: 313
Thanks guys we have managed to solve it with the following process. each day we are taking a dump file from the external svn that the outsourcers have access to and applying it to the trunk of our internal SVN.
We meanwhile have been working on a branch from that svn and committing all of our changes there.
We then merge the branch back into the trunk and resolve any conflicts.
Then we spin out a new branch to work from and wait till the next day.
The outsourcers SVN doesn't get affected, we get their latest changes without losing our own and it doesn't take us too much effort - and since it is mostly controlled by svn the potential for human error is reduced.
Upvotes: 1
Reputation: 6375
I haven't played with this, this is just an idea.
There is svnrdump utility which may take dump of a remote repository. If you will continuously load this information into your repository, then you'll be able to make any branching/merging.
The main problem is that svnrdump is for filling new repository with information, not existing one, so probably some manipulations on dump content will be needed... They may not be trivial - you'll likely have somehow to store revision correspondence.
Also I saw svn2svn ( http://svn2svn.codeplex.com ) tool, but it seems to have limited support for operations and not very actively developed...
Upvotes: 1
Reputation: 30862
You need Vendor Branches. Give the outsourcing company access only to the 'vendor' section of your repository (if they're using http access then you can lock down the permissions in the .htaccess
files so they only have access to this directory). This location only contains the code they submit to you.
You then create an area elsewhere in SVN which you initialise with the code they provide. Let's call this the 'third party' directory. You can make more changes yourself, but the outsourcers won't be able to see this directory. If the outsourcers commit a new change in the vendor area then you will need to merge these changes into your third party area using the commands described in the Vendor Branch link. As with other subversion merges, if the changes don't conflict with the changes you've made yourself then the merge is very simple. If there are conflicts then you would need to manually resolve them in the usual way.
Upvotes: 1