I'm using svn again now after using git and hg for a few years (tfs was in there too - i don't want to talk about that). I always liked svn and found it adequate but don't anymore.
There's nothing a DVCS provides that you can't live without - just as 64Kb of RAM was once perfectly adequate. There are just a whole lot of things with DVCS that suddenly become easier or possible. While you might not have considered these things earlier (because you couldn't), you really miss them when you can't. They are insanely fast - especially git. You will notice how fast they are every time you need to do a commit. Insanely fast encourages more frequent commits. The fact that after a clone, you end up with the entire history of a project locally (including every branch) in far less time than svn would take to check out a single code line (due to all the thousands of tiny control files it needs to create in every directory) is the winner for me. Hosting is free or really cheap (bitbucket/github/launchpad). For an open source project, fork/send pull request is a much lower barrier to entry for collaboration than checkout/email patch file. If you accept a pull request, that person's commit becomes part of your codebase as them without you needing to provide direct commit access (as opposed to their changes being committed from a patch by you). I prefer to avoid branching where possible but they make branching effortlessly easy. Merging with git/hg is trivial and is properly tracked unlike with svn. Merging is always awful but git in particular seems to have some preternatural ability to help you get it right. DVCS won't make you taller, more muscular or attractive though (i've tried - it really doesn't work) so use your best judgement. On Wednesday, 3 November 2010 at 6:43 PM, silky wrote: On Thu, Nov 4, 2010 at 12:37 PM, Joseph Cooney <[email protected]> wrote: argumentative? silky? GTFO! :) Most of my experience with DVCS has been with mercurial (hg) which I've used for about the last 2 years for my personal stuff. Before that I used SVN. I think the difference (from my point of view) is that hg works well in a super-set of configurations to TFS/SVN. If you were a solo developer with TFS installed locally then hg probably wouldn't be that much better (it certainly handles branching, merging and backing up more cleanly than TFS/SVN). But most people don't work that way - the server is remote. If you want to look at the 'history' for a file or do a diff it's a network operation. Checking out is a network operation (at least for TFS it is...not sur e about SVN). In the case of TFS 2008 when the server was off-line work ground to a halt. With hg sometimes there _is_ no central server. I've had good experiences collaborating with other devs using hg with no central server set up, just sending patches back and forth for synchronization. You can set up your development processes such that your DVCS is fairly centralized (like things would be with TFS/SVN) - devs commit and push/pull often. Then you just get the perf wins of local disk I/O vs. network I/O and better merging capabilities. Yeah, this is what I thought. And I can't help but feel this is totally overrated. I mean, I don't know a single person who would say using SVN is slow. It's never slowed me down at all (perhaps I'm just slow in general?). Checkout takes a while, sure, but you don't do that every day. Infact, you normally only do it a few times, perhaps when creating a branch or something. O kay, so you are telling me that perhaps git/hg is better because you automatically get your 'own' repo and you need to specifically 'push' it to the core; thus kind of creating a versioned development pattern automatically. Alright. I can accept that as useful. High-level summary (from my POV) - DVCS well in a super-set of configurations to old skool SVN/TFS/CVS Joseph -- w: http://jcooney.net t: @josephcooney -- silky http://dnoondt.wordpress.com/ "Every morning when I wake up, I experience an exquisite joy — the joy of being this signature."
