Should I store all projects in one repository or multiple?

Depends to an extent what you mean by “project”.

I have a general local repository containing random bits of stuff that I write (including my website, since it’s small). A single-user local SVN repository is not going to suffer noticeable performance issues until you’ve spent a lot of years typing. By which time SVN will be faster anyway. So I’ve yet to regret having thrown everything in one repository, even though some of the stuff in there is completely unrelated other than that I wrote it all.

If a “project” means “an assignment from class”, or “the scripts I use to drive my TiVo”, or “my progress in learning a new language”, then creating a repos per project seems a bit unnecessary to me. Then again, it doesn’t cost anything either. So I guess I’d say don’t change what you’re doing. Unless you really want the experience of re-organising repositories, in which case do change what you’re doing 🙂

However, if by “project” you mean a ‘real’ software project, with public access to the repository, then I think separate repos per project is what makes sense: partly because it divides things cleanly and each project scales independently, but also because it’s what people will expect to see.

Sharing code between separate repositories is less of an issue than you might think, since svn has the rather lovely “svn:externals” feature. This lets you point a directory of your repository at a directory in another repository, and check that stuff out automatically along with your stuff. See, as always, the SVN book for details.

Leave a Comment