For CS undergraduate students working on a 2-semester capstone course without any prior exposure to revision control systems, what would be a good one to use?

Desirable qualities would be easy to use (ie this should be a tool they can use rather than spend a lot of time fighting it) and still be relevant for subsequent professional work once they graduate (doesn't have to mean it has to be the same tool later on as long as the concepts survive).

Easy to install and maintain for the person who does this. Not sure if I am missing anything else important.

I am aware of subversion (centralized), git (distributed) and mercurial(also distributed?) - but don't know enough about any of them to have an informed opinion. Are there others I should consider? This will be on a predominantly Windows environment.

EDIT: I am really interested in the pedagocial aspect of teaching/learning these systems, not so much from the perspective of an already experienced software developer.

  • 1
    Just choose one. All the popular ones are easy enough to install and have good documentation. – Oded Apr 20 '12 at 14:49
  • 3
    good starting point to form an informed opinion seem to be Stack Overflow tag wikis - here are links for svn, git and mercurial. Also this answer provides quite a compelling reasoning that may help in narrowing your options – gnat Apr 20 '12 at 14:54
  • @gnat thanks for the links .. I'll be doing some more additional reading :) – Levon Apr 20 '12 at 15:34
  • sorry this got closed, I looked at the other links provided, I don't think my question is an exact duplicate (though I learned a lot about the various systems). I believe my EDIT clarifies my goal - I should have put that emphasis into my original question - and I was looking for more answers with that perspective in mind (e.g., Karl Bielefeldt's answer among others) – Levon Apr 20 '12 at 16:24

I wish git or mercurial were around when I was in college. I think we used cvs for our big group project, and it was difficult getting the entire team to use it. Part of the problem is college students often have a laptop as their only computer, with spotty internet service that often firewalls any non-http traffic. Either that, or they use school computer labs with the same firewall issues, and that rarely have a source control client installed. Even if you personally are better equipped than that, you have to think about the lowest common denominator on your team.

With distributed version control, you can put the client and a repo on a laptop or usb drive and work completely disconnected most of the time, with lots of different ways to share your changes: sites like github, emailing bundles back and forth, or even just pushing and pulling from each other's thumb drives or laptops on a LAN when you get together for team meetings.

I might throw bzr into the ring. It's more noob friendly than either mercurial or git, but also not as flexible. Git has a reputation of being difficult for noobs. The bare essentials are as easy to learn as any other VCS, but people get overwhelmed by all the different advanced options available, and aren't sure what's safe to ignore or not. Its CLI syntax is also very unix-like, which makes it feel very intuitive for *nix users but a little quirky to others. Mercurial's a good balance. It hides a lot of the complexity, but is still very capable, with a syntax more familiar to Windows users.

| improve this answer | |
  • Hallo Karl .. yes, you summarize the issues quite well. I used cvs (and rcs?) quite some time ago too. Is bzr another system? I'll take a look at that too. – Levon Apr 20 '12 at 15:34
  • Yes, bazaar is the more or less official VCS of Canonical, the makers of Ubuntu Linux. – Karl Bielefeldt Apr 20 '12 at 15:37
  • Ah, ok, I'm familiar with Canonical as a long time Ubuntu user .. thanks. Right now it seems that Mercurial might be the most recommened, though I'm happy to consider trading noob-friendliness to flexibility for a simple capstone type project. – Levon Apr 20 '12 at 15:40
  • Karl, when I was making the decision between git, hg and bzr a few years ago, I ended up with hg because of the poor git support on Windows, hgs ease of use and the horribly arrogant attitude of the bzr developers at the time. I know some of these things have changed, but I wonder if bzr developers attitudes have got better or worse as their dvcs has been eclipsed by the popularity of hg and especially git. – Mark Booth Apr 23 '12 at 14:11
  • Git: most powerful, steepest learning curve. Support under Windows was not stellar last time I checked. Unless the students are already familiar with it, think twice. Extremely popular so it might be worth teaching nevertheless.
  • Mercurial: easier than git, but still distributed with all the advantages of this (cheap branching, work offline). Should take less effort teaching. Supported well under Windows.
  • Subversion: centralized, conceptually the simplest of the three, but not significantly. Supported well under Windows. Needs the students to be always connected to the server to reap the benefits of version control. Used to be least friendly of all when merging.

I'd take Mercurial.

| improve this answer | |
  • 3
    HG really is the way to fly -- it is the approachable DCVS . . . – Wyatt Barnett Apr 20 '12 at 15:22
  • Git support has been pretty good on Windows for the last few years now. Mercurial still has teachability advantages, though. – Karl Bielefeldt Apr 20 '12 at 15:32
  • @9000 Thanks .. nice summary (and I appreciate the teaching angle too) – Levon Apr 20 '12 at 16:33

Git is probably the best one.

There is the Git-Client SmartGit (and similar ones) for newcomers. Git is very popular and there is github, where students can store the files. (At my university all courses use git. In most cases the repositories are public hosted on github.)

| improve this answer | |
  • You can push/pull to/from github with mercurial with the hg-git plugin, so access to github is not a valid argument IMHO. – marco-fiset Apr 20 '12 at 15:08
  • 2
    I would not recommend hggit for new users of Mercurial — I would instead send the students to Bitbucket where they can host as many public or private repositories as they want. – Martin Geisler Apr 20 '12 at 15:24
  • @MartinGeisler Thanks .. I wasn't aware of BitBucket, I'll check it out. – Levon Apr 20 '12 at 16:08

Not the answer you're looking for? Browse other questions tagged or ask your own question.