views:

314

answers:

9

I want to set up a source code control system that:

  1. is networked, so users can access it at work or on the road
  2. does not need to provide sharing, lock mode is sufficient
  3. there will be only three users and they will never be working with the same code
  4. we have no system administrator and not much knowledge in that area so the set up and config must be dead simple.
  5. will be installed on a Windows server
  6. open source or free

Suggestions please.

+18  A: 

SVN covers all of these, and is quite easy to set up.

Wrt point 2, sharing tends to be better than locking, as a file that is locked by someone who then goes on holiday/dies/etc. needs to be unlocked by someone before it can be worked on by another developer. SVN supports sharing 'out of the box'.

Rich
+5  A: 

Try Subversion (svn).

Edit: Rich beat me to it =D. And yes, as he points out sharing is better than locking. Sounds like you're a SourceSafe user. Those were the same set of problems I was trying to address when moving out from SourceSafe =)

fung
+3  A: 

I recommend Toroise SVN. SVN is a source control environment that's easy to set up and use on Windows, and Tortoise is an add on that integrates with windows explorer.

Despite being simple to use, it allows different people to work on the same file and merge their changes. Even though that "can't happen" I predict at some point you'll be happy that it works that way.

RossFabricant
+5  A: 

I can only add my voice to the "use subversion" chorus. But you were also asking about simple installation and administration.

For that I would point you to VisualSVN Server. It is an easy to use server installation on Windows. And it is free.

Or if you want to go with a manual setup (maybe because you don't want to use the apache bundled with visualsvn server) follow Jeff's Setting up Subversion on Windows.

Tobias Hertkorn
+2  A: 

Darcs provides all this and a lot more. It's a distributed version contoll system, which would make it easier to access the data on the road. You can send/receive patches (similar to revisions) through email or ssh.

The thing about darcs that I like the most is that it's really verbose. It really tries to help you.

Georg
+5  A: 

the SIMPLEST system is what we here call the "Hey Chris" system. We have a networked drive that everyone can mount, and if you want to edit something you shoud "Hey, Chris, are you working on blahblah.cpp?" and Chris says "Nope." and then you edit blahblah.cpp, and stick it back on the shared drive... If you want versions, just back up the networked drive every night.

I never said it was the BEST system, just the simplest.

Brian Postow
Have to upvote just for making me laugh and reminisce about the good o' days =)
fung
We used to call it the Ninja Net. Anytime we made a change, we'd copy the files onto a 3.5" floppy, and then fling it across the room to the other programmer.
Tim Sullivan
I did something similar with a system a few years ago. In order to perform the editing you had to have possession of the "edit token" - a plastic plate with the word "token" written on it.
Peter M
+5  A: 

Mercurial or Git

BianJiang
It seemed easier to install networking for Mercurial than for SVN. This is completely anecdotal evidence, with sample sizes of 1 each. Your mileage may vary. Past results are not guarantees of future performance.
David Thornley
+2  A: 

Lots of recommendations for SVN, but I'm not sure I'd call that "simplest" from an admin point of view. You still need to set up a server, IIRC. In comparison, a DVCS like Mercurial makes no distinction between "repository" and "working copy". To put something on a server (which can be any folder you have file-sharing access to), you can just "push" it there.

You also mention working on the road. DVCS are particularly good at this. Your laptop will have the whole history, so you only need to touch the server if you want to push or pull, not just to do a diff or check the history.

Ken
+2  A: 

I really dig Git and GitHub for this. Git is nice because each developer can check things in and go through the history even when they're offline (say, on an airplane or in the backwoods somewhere), then push their changes to a central repository when they are back online. GitHub works really, really well as that central repository, and includes a lot of very handy tools for reviewing and commenting on other people's checkins.

The basic commands that you use day-by-day boil down to:

git add .
git commit -m "this is a note"
git pull origin master
git push

Git handles most conflicts very well, and it's fast, fast, fast, since the entire repository is on each machine.

Kyle Cordes wrote a blog post about getting started on Windows.

Tim Sullivan