Join 3,561 readers in helping fund MetaFilter (Hide)


My versions are out of control...
September 12, 2007 9:42 AM   Subscribe

Which version control system should I learn/use?

I've written code in several languages for ages. I've done work professionally, and now I'm working on a big project. I've never used version control, short of committing some minor changes to SVN and CVS respositories.

As I am the only developer on this project I can choose whatever I want. My development environment is Ubuntu Linux, as is my production server. I like using the command line, so a GUI is not required, but it would be cool if a good one existed for Linux.
posted by phrontist to Computers & Internet (18 answers total) 7 users marked this as a favorite
 
Oh, and whatever you recommend, please link to a tutorial that assumes no prior version control experience.
posted by phrontist at 9:43 AM on September 12, 2007


knowing svn is good. here's the book.

but you'll want to learn about a distributed version control system, too. bazaar and mercurial are two of the best. there are tutorials for both in their documentation.

as long as you're staying linux-only, git is another alternative.
posted by jimw at 9:48 AM on September 12, 2007


Lots of people are raving about Git. If your toolchain doesn't rely on SVN or CVS, It'd be worth looking at. Subversion is OK if you're going straight ahead, but christ it's easy to get into a hair-tearing mess with the bastard.
posted by bonaldi at 9:49 AM on September 12, 2007


If you use subversion, make sure you use the fsfs file store.
posted by SpecialK at 9:51 AM on September 12, 2007


I can't speak to the distributed version control systems, but as far as traditional vcs systems go, Subversion is definitely the one should know how to use.
posted by mmascolino at 9:57 AM on September 12, 2007


Linus Torvalds wrote some of the early Git code and he is a big supporter of it. There is a video of Linus discussing at Google why he thinks all other VCSs are inferior to Git.
posted by bored at 10:00 AM on September 12, 2007


Git has been getting a lot of coverage recently, I think mostly because of the talk Linus did at Google. Git does sound quite interesting, as does Mercurial.

SVN is probably your safest bet.
posted by chunking express at 10:07 AM on September 12, 2007


whatever you use, DON'T USE VISUAL SOURCE SAFE. Even Microsoft won't use it. VSS eats code.

From http://www.codinghorror.com/blog/archives/000660.html :
There's simply no reason to use SourceSafe when there are so many inexpensive (and even free) alternatives that are vastly superior. The more customers I visit, and the more developers I talk to, the more I believe that SourceSafe poisons the minds of software developers. Note that I include our own shop, Vertigo Software, in this list.

* SourceSafe gives you the illusion of safety and control, while exposing your project to risk.
* SourceSafe teaches developers bad habits: avoid branching, exclusive locks, easy permanent deletions.

SourceSafe was a perfectly adequate source control system in the late 90's. Unfortunately, SourceSafe was never updated architecturally to reflect modern source control practices. Even the latest version, SourceSafe 2005, absolutely reeks of 1999. And, to be fair, some of the same criticisms apply to CVS. CVS is no longer a modern source control system, either; it doesn't even support the concept of atomic checkins.
Read the article for some pointers to other, better version control systems.
posted by jenkinsEar at 10:08 AM on September 12, 2007


I second avoiding VSS and I second using Subversion. I've been using SVN since leaving Source Depot (aka Perforce) behind at my last job, and I quite like it. It can be a pain to get set up, but once you've got it running, it is much more straightforward (than SD/Perforce), especially when it comes to integrates and moving/renaming files.
posted by jeffamaphone at 10:10 AM on September 12, 2007


Really, most anything will do, for you.

"bzr" or Bazaar is written by the same folks making Ubuntu, so if you think they're doing a good job... It's the up-and-coming one. Mercurial or "hg" is popular in some circles. "git" is used in Linux-kernel land, and is growing in popularity also.

cvs and svn are okay if it's just you, and never will be anyone else, AND if you don't expect to make branches. The others I mentioned above make branching totally obvious, once you get your head around the fact that
in distributed SCM systems, there is no "trunk".

So, it's pretty arbitrary to choose one. Just try a few and see what sticks.

But stay away from RCS.
posted by cmiller at 10:35 AM on September 12, 2007


Subversion is the defacto standard today for open source and startups; you need to know it. Git is getting some buzz from folks annoyed with weaknesses in Subversion, so if you feel like playing around it's worth your time, too.

For larger projects (100+ people) Perforce is probably the best choice. It's commercial and closed source, but excellent. Its main advantages over Subversion are higher performance with big code repositories and much better branch support.

All of these systems are simple and shouldn't take you long to learn if you use them.
posted by Nelson at 11:08 AM on September 12, 2007


Oh, forgot to include this Crash Course in Subversion as a tutorial.
posted by Nelson at 11:10 AM on September 12, 2007


Wikipedia actually has a good page comparing a lot of VCS.
posted by chunking express at 11:13 AM on September 12, 2007


I've used CVS, SVN, and git extensively and I think git is a pain in the ass and should only be used by very large projects with a number of committers. It's merging capabilities are great, but it's complicated and a bit frustrating. For an individual project like yours, I'd use SVN. Nearly every IDE I've seen at on Linux has an SVN interface, so you shouldn't have any issues finding a GUI.
posted by cmonkey at 11:18 AM on September 12, 2007


I can't believe nobody has mentioned darcs!
posted by panic at 1:11 PM on September 12, 2007


Nthing Subversion.
posted by zackola at 1:39 PM on September 12, 2007


Distributed is the way to go; your local "checkout"
posted by korpios at 8:58 PM on September 12, 2007


I used Subversion for small personal projects for a while. My work was spread between a laptop, a desktop, and a VPS. Subversion was greatl in comparison with VCS or SCCS but when I switched to Mercurial a lot of hassles disappeared from my life. Based on my limited experience if I were starting a search for a version control system I'd start looking at the distributed version control systems and skip looking at the non-distributed ones.

If you decide to look at Mercurial I should say that one big con for me was the clumsy way it failed when it ran out of memory.
posted by rdr at 4:41 AM on September 13, 2007


« Older What can I do with 4 big IDE d...   |  What's going on in these stran... Newer »
This thread is closed to new comments.