4

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.

gnat
  • 21,442
  • 29
  • 112
  • 288
Levon
  • 278
  • 2
  • 12
  • 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](http://stackoverflow.com/tags/svn/info), [git](http://stackoverflow.com/tags/git/info) and [mercurial](http://stackoverflow.com/tags/mercurial/info). Also [this answer](http://programmers.stackexchange.com/a/87245/31260 "Why is Mercurial considered to be easier than Git?") 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

3 Answers3

12
  • 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.

9000
  • 24,162
  • 4
  • 51
  • 79
5

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.

Karl Bielefeldt
  • 146,727
  • 38
  • 279
  • 479
  • 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](http://bazaar.canonical.com/en/) 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, `hg`s 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
3

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.)

mrsteve
  • 450
  • 3
  • 10
  • 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](https://bitbucket.org/) 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