Martin Fowler's unscientific agglomeration of opinion on version control tools
martinfowler.com
martinfowler.com
Perforce still has better support for branches than Subversion does - in particular, it has robust support for repeated merges between branches. Subversion 1.5 added "merge tracking" which is supposed to address this problem, but in my real-world use Subversion still failed relatively often at repeated merges and the recovery process is tedious and annoying.
On that particular project we ended up switching to git, but I would definitely choose p4 over svn for use cases (like very very large repositories) where they are both better than git or hg.
Git may be "hard to use", but at least it doesn't shred my work for no reason.
My guess is that most of us don't work with large and active enough code bases for this to matter. But if you do, consider Perforce.
In other words, stuff you would actually want to live on a network drive or some other sharing mechanism. But if it's easy enough to shove 10 gigabytes to Perforce, it will happen.
Disk space is cheap and what you really want is access to cumulated, unchanged old versions -- not version control: you generally don't diff or merge between compilers or test images.
Instead, you can store builds of each and every gcc version you've ever used on a network disk with very little money and then properly use the version control system to have the different revisions of the source code point to the correct set of tools and resources.
It's like a persistent data storage with good accessibility and no delete command. This is the only real reason why people abuse their version control system with huge binaries and it's the only reason I can think of. I shall bow to anyone who has the guts to refuse to abuse and do it properly instead.
As a good illustration for others of what you're talking about, the bug report points to this picture [2] in which commit 17 to trunk is what causes svn problems.
[1]: http://subversion.tigris.org/issues/show_bug.cgi?id=2897
[2]: http://www.open.collab.net/branding/images/projects/merge/re...
When it comes out of the box as a bag of bits that you're going to have to configure, hack and code for hours to get what you want you sometimes wonder why you didn't just go SVN + Cruise Control.
For the record, I just wanted my test pass/fails to be emailed to us in a NUnit gui way (red + green). Maybe i'm stupid but that took way too long for a tool that costs so much.
Day to day experience is just friction, friction, friction.
And guess what keeping source control and your IDE seperate is actually a good idea. Also why do I care that Alex down the hall has opened a file - what am I supposed to do with that information...
Too true. Killing time watching your IDE lock up is not fun. Nor is the fact that _some_ IT departments still haven't performed the upgrade from TFS 2005 unservicepacked
.. ..
cries
1) friends don't let friends use Windows without Cygwin :-D
2) I've been using git under Cygwin on Windows XP since mid 2007, and have never thought that it worked poorly. In fact I would say that it has always worked beautifully.
Perhaps the problem(s) with Cygwin git only rear their ugly heads on multi-developer projects. My experience has all been on single-developer projects.
...using continuum you can just plug in a POM with a git connector and no trouble with CI and git...
Software development efforts can span 6 or more orders of magnitude difference, and can differ in character enormously (such as between a scheduled release cycle of unpatchable, life-critical software vs. a constantly updated web site). Yet despite this huge diversity, most commentators insist on ignoring it and giving blanket advice as if it were equally applicable to every development effort in the history of the Universe.
The various drawbacks and benefits of different source control tools will matter differently to teams of different scales and processes. For some teams SVN may make sense, for some it may not be even remotely feasible. I've heard of teams that could not use git because of scaling issues (shocking as that may sound).
It's hard to take advice seriously that doesn't acknowledge these issues. It's no different than someone talking about web infrastructure and saying that the best solution is php/apache and mysql running on two separate servers. That may be a fine solution, but it's overkill for some scenarios and unsuitable for a lot of other scenarios. Sometimes you need a thousand servers, sometimes you only need a single 128mb ram VPS, sometimes you need scala or erlang, sometimes you don't need anything more than static html, sometimes you need a REST backend, sometimes you don't, sometimes you need nosql, sometimes you don't. What works for amazon.com may not be applicable to a personal vanity page or to twitter or google or paypal.
(edit: your downvote wasn't me)