I’m in the fortunate situation where I am setting up a new SVN system for my company. I don’t have to worry about legacy projects or anything, this is a brand new install.
We do web development, so we have lots of small projects for a bunch of different brands so my question is how should I set up SVN? I could do it where we have one repository for each project, that would mean we have a lot of small repos OR one HUGE repo with all our projects in it.
I see advantages/disadvantages to each and would love to get some other peoples feedback.
I use one repo for each project.
The big advantages:
- If one repo crashes all other are still OK
- I can easily push a repo to an other server and only have to do a “svn switch” for that specific project instead of all projects
- If ever required I can export the repo and mail it to the client
There are far more advantages but I’m too lazy to think about them now as it’s late after knocking-off time…
So my recommendation is go for a repo per project - the little overhead of creating one each is really worth it (and can be automated).
yea…that is my thinking too. Plus, I could easily control who has access to each repo, so I could have a freelancer come in and they wouldn’t have access to every project in my company.
Another example of a single repository would be that you could perhaps branch all projects off some sort of ‘base’ source, and deploy updates to that ‘base’ system very easily by merging it to all other projects
Use svn:externals for that.
It’s absolutely not worth loosing the flexibility of several repos, even more when you can get the same functionality with so simple settings like svn:externals.
Make a repo for your base app, import it to your project repos by defining svn:externals and there you go.
Regarding access control - you can specify access rights for each path, so that’s neither a pro nor a con for single/multi repo.