views:

420

answers:

5

I've recently become technical director of a small web development agency and we have a large codebase spread across around 200 websites. The code is in PHP & VBScript and a lot of client side javascript and some complex MySQL queries.

What I'm looking to do is to set up a code repository where we can store all our functions, scripts and files. We've currently got 2 developers working off a network drive holding all the files and this is obviously not an ideal solution.

What I'm wondering is if anyone has been in a similar situation and what they have set up for their code repository. I'm thinking of setting up a remote Subverison filesystem for the server side code.

Can anyone recommend a sensible way to maintain and store our code base? Is Subversion the best option for our situation? We're running a web-facing Solaris server so remote access is a goal of the system. Many thanks.

+3  A: 

I'd recommend using git and GitHub as the remore repo host (though there are others, and you can certainly self-host git repo's). We've succesfully used this for many large projects with upwards of 15 contributors scattered across the world.

A major benifit of git is that being distributed, if you can't access your remote repo for some reason, your devs can work locally, commiting their changes without the need to send the changesets back to a central location. Furthermore, they can pull from each others repo's in order to share their changesets.

It's lightning fast when commiting locally, and each time you clone a repo (analogous to svn's checkout, almost), you get a local copy of the entire repo, so checking the logs, diffing files and rolling back are much faster than SVN.

If you're interested, this article might be worth a read.

Mr. Matt
I am not sure about GitHub, I'd guess you'd want to spread the code over several/many private repositories - perhaps easier/cheaper to host these on your own server...
Chris Kimpton
It's worked for the company I work for and my own private projects for a good while now (~2 years). By having an off-site repo host, it's possible to mitigate the risk of losing your 'central repo' in the event of a disaster. Furthermore, Github offers an awesome user experience (visualisations, commit comments, permission management, etc).
Mr. Matt
Oh, you wouldn't host all of the code in one repo - you'd have one repo per project.
Mr. Matt
would have accepted both your answer and Anton's if possible. Comparing Git and Subversion now. Cheers
ewengcameron
+4  A: 

If you have a dedicated public-facing server, you'll be able to set up Subversion service (or daemon -- or whatever they're called in *NIX world): on Windows you need Svnserve, and on NIXes (and on Windows as well) Apache will do the job.

Anton Gogolev
yeah, we have a web facing server so we'd be able to set up Subversion for remote access. Cheers
ewengcameron
+4  A: 

Subversion is a great solution for this problem. Subversion is free, and can be sometimes quite complex to setup, if your looking for a quick solution you could try VisualSVN (it has an easy install for windows)

You also have Mercurial for version control, it handles versioning differently.

Install TortoiseSVN on each of your developers workstations, to interact with Subversion.

You should also look at Continuous Integration, with subversion. (for .net I use cruisecontrol.net and TeamCity)

Elijah Glover
A: 

I tend to find that Trac is that little bit better then SVN just sheerly on the project management and REPO side of it all, both are very good to use and only require you to learn a few commands unless you are on a Windows machine where you can use TortoiseSVN

Marc Towler
Trac and SVN can be used together (and often are), as they have different purposes.
Peter Štibraný
+1  A: 

If you are looking for a hosted SVN solution, Unfuddle works well for us.

Lakshman Prasad