Which Windows-based version control system should I use?
September 13, 2008 5:00 AM   Subscribe

Should I use Subversion, CVSNT, or something else for version control on my home LAN?

I want a basic source code control system for keeping various projects documents versioned and all in one place.

My requirements:
* Runs on Windows on both ends: Setting up a Linux server would be fun, but that's not what I want to do. Also needs a reasonable Windows client (i.e. TortoiseCVS was fine)
* Works with a remote data store: The repository data belongs on the NAS for reliability reasons, so the server needs to be able to handle this fact
* Easy backups: I'd like to take period automatic backups of the entire repository + history; it'd be great if this was as easy as just burning a DVD with the current contents of the repository folder
* Easy to set up: Ideally I'd just say "store your crap here and the default login is guest/abc" and be done with it
* Merge concurrency, not lock
* Good rename would be really nice but is not a strict requirement

My setup:
* One ReadyNAS NV
* One stable Windows machine running 24/7 that can run the server
* Three or four various other clients (my desktop, my laptop, roommate's laptop, etc)
* Gigabit ethernet throughout

What I don't need:
* Over-the-internet access, though this would be cool if it works automatically
* Fancy security
* Branching, tagging, labels, check-in comments, check-in policies, check-in events, etc.

Subversion and CVSNT seem to be the big names here. Which do you recommend and why?
posted by 0xFCAF to Computers & Internet (9 answers total) 4 users marked this as a favorite
Best answer: VisualSVN Server.

It's quick, easy. You mount the NAS as a drive on the server and just backup that whole drive to an external harddrive attached to the NAS. You can use Tortoise and permissioning with SVN is incredibly easy to setup (and this software provides a GUI).
posted by purephase at 5:48 AM on September 13, 2008 [2 favorites]

Seconding SVN... fairly shallow learning curve, easy to back-up, over the network, etc.

Backups can be done by snapshotting the repository folder, or it has a portable dump format which supports incremental dumps.
posted by TravellingDen at 6:39 AM on September 13, 2008

Why not just host Subversion directly on the ReadyNAS? Good choice with the ReadyNAS, btw - I love mine.

Also, I'm not sure if it meets your requirements, but I've heard a lot of good things about Perforce around our dev shop, so that's worth looking into. They offer a free 2-user "demo" that is really the full product, but limited to two users (not just a clever name).
posted by schwab at 7:05 AM on September 13, 2008

Consider Mercurial. It works quite well on Windows, is substantially easier to set up, faster in day-to-day use, and simpler overall than SVN, and since every checked-out copy of the repository has a full copy of the history, you already have an automatic backup if your central repository has issues. (You can also commit to your local repo while offline, and push / synchronize the changes later.)

You can run a webserver for sharing / browsing changes by typing hg serve -p 8080 (or some other open port). The net result looks like this.

There's also a TortoiseHG client, btw.
posted by trouserbat at 10:13 AM on September 13, 2008

I prefer perforce which as scwab says is free for 2 users (or one, of course.) It fits my way of thinking much better than subversion does. Check it out (sorry, couldn't resist.)
posted by airplain at 11:31 AM on September 13, 2008

I'd use Mercurial, or SVN right on the ReadyNAS.
posted by Jairus at 12:17 PM on September 13, 2008

Git & Mercurial should have the best tools for merging among the open source ones. Subversion isn't too great about merging.

To me, Git sounds best for personal version control because : (1) Git deals with disorganized file better since "git tracks contents not files", i.e. git goes way beyond having a "good rename". (2) Git's sha1 hash use helps protect your data, even from malicious modifications. (3) Git doesn't require any network services except ssh. (4) Git has great tool for interaction with other SCMs.

I suppose (2) doesn't apply since you've a ReadyNAV, but (1) is a big deal. Mercurial might be more windows friendly. You can convert between Mercurial and Git repositories. (see this comparison)
posted by jeffburdges at 12:38 PM on September 13, 2008

Git is good too, but in my experience it doesn't run as comfortably on Windows. For example, many of its optimizations are based on intimate familiarity with the Linux filesystem, and don't apply elsewhere. One of the leaders on the project is Linus Torvalds, who has made it pretty clear that supporting git on Windows is not exactly a priority. Mercurial works quite well there, however, and (in part due to being in Python, in part as a general goal) is explicitly a multi-platform VC.

With the exception of github, virtually everything good people say about git's features (including jeffburdges' points above, except #1) also applies to mercurial, and vice-versa. They feel different (I'd say that git has a C/shell script/perl quick-and-dirty sort of culture to it, while mercurial has a Python clean-simple-"one obvious way" culture, and the culture/community influences features, documentation, etc.), but their overall design as distributed version control system is quite similar, and most features that develop under one are quickly ported to the other.

Also, I use Perforce at work, for a very large system with several branches and tens of thousands of commits. I am working on moving us over to Mercurial because maintaining several branches with frequent merging is awkward, and dealing with its idiosyncracies has gradually come to disrupt our workflow. Perforce was probably one of the better solutions ten years or so ago, but newer VC systems have fundamentally different designs, with some major improvements. (I also rather dislike it, but after having used CVS, SVN, Monotone, Mercurial, and Perforce heavily for at least several months each, I believe I can compare them reasonably dispassionately. If nothing else, though, don't use CVS.)
posted by trouserbat at 6:09 PM on September 13, 2008

nthing running SVN on the ReadyNAS.

hg and git are great and all, but svn is mature and will be fine for your needs. I use TortoiseSVN every day and it is fantastic.

Barring running TortoiseSVN on the NV, there are Windows-only svn distributions available:
posted by kenliu at 5:53 PM on September 14, 2008

« Older Boosting the volume of iPod movies...   |   Help me not dash my headphones to the ground! Newer »
This thread is closed to new comments.