views:

694

answers:

12

This question is not asking what revision control software I should use. Rather, I would like to hear what you think are the downsides of some of the SCMs you've used.

Websites and marketing material only highlight the advantages, but I want to hear from people who have actually used it what they think are the downsides.

Can you name some quality or behaviour you find annoying or counter-productive in an SCM you are using or have used?

+6  A: 

I can confirm most of the stuff mentioned here about VSS.

I have been forced to use it. :-(

kay.herzam
I would concur with most of these points also... I use 2005 and not much seems to have improved since this was written
BenAlabaster
Calling VSS a SCM system is giving it too much credit.
glebd
+2  A: 

Even though SCM is probably one of the best things you can use in a development environment it always bothers me that (and these might be nit-picking):

  • When someone else changes I file, I don't know about it until I commit or do an update.
  • Merging is a pain in the ass.
  • When other people suck at using it, it gets in the way more than it helps.
  • It's too difficult to manage different branches, tags and trunks of the same app.

That's all I can think of now. :)

Peter D
Which SCM are you talking about?
finnw
1- Otherwise you'll end up breaking your workspace non stop2- Why?? What sort of SCM are you using? It shouldn't be3- Right4- Guy, change your SCM to something better!
pablo
+3  A: 

Subversion: the server is very robust, but there's no GUI admin client (edit: really needs to be one with a support option)

We switched from SourceUnsafe to Seapine SurroundSCM about a year ago; we strongly considered Subversion, but our repository administrator, who does a very good job, is not a command-line expert, and without a GUI admin client there was a huge hole in the way we could maintain our company's source control repositories.

FWIW, I think all of the SCMs have problems with terminology. This makes it even more hellish to switch SCM software when many of the users at our company are not software engineers with perfect memories. VSS calls directories "projects". Seapine SurroundSCM calls directories "repositories". (Subversion had some annoying names for things also but I can't think of what they are right now)

Jason S
There's a few about: http://supermind.nl/submin/about.html, or VisualSVN Server (really good admin tool, but windows only).
gbjbaanb
thx, I hadn't heard about those.... still, as a commercial enterprise we need one for which we can purchase support. we need to spend our time developing software, not maintaining a version control repository and fighting issues w/ the software.
Jason S
VisualSVN Server is a teaser product for a commercial company, including paid-for support.
gbjbaanb
+2  A: 

Here's my personal list. I don't claim that these points are incredibly well researched, but these are the major gripes I've had with them based on my usage patterns.

  • Monotone: Having to specify "." to mean the current working directory (otherwise, any command applies to the whole working copy).
  • CVS: Too many to list. Avoid at all costs. (probably the permission handling, though).
  • Subversion: Not distributed.
    • SVK: adding distribution to subversion feels clunky.
  • Mercurial: It's a monotone clone - why, dear god, why?
  • Bazaar: Really weird approach to networking (though that may be outdated).
  • Git: Source code quality, but that's changing.
CVS is better than several things I've worked with. I'd rather have Subversion or a DVCS, but it's better than anything else I've been forced to work with, and far better than none at all.
David Thornley
David, I'm just commenting on the ones I know - and yes, CVS is *a lot* better than none at all :)
Mercurial is not a clone of Monotone, but it shares some design ideas with it: changesets are identified by their SHA-1 hash, which includes the hashes of the parent changesets. This design is quite natural, and Git uses it too.A difference between Mercurial and Monotone is that Mercurial has a disk format which is optimized for O(1) retrieval of revisions using O(1) seeks. Monotone uses Sqlite as far as I know, and cannot guarantee the same performance.
Martin Geisler
SVN+SVK has some problems in that it *IS* clunky, but for me, I love it. I've been trying out git, and so far it hasn't offered me anything that SVK doesn't, except a TortoiseXXX client. Though TortoiseSVN DOES work with the local copy, and I have to drop back to a command line to do merging.
Chris Kaminski
+4  A: 

Subversion. Its branching support is horrible - that is actually why I prefer Mercurial these days; I don't develop stuff on an airplane, but I do need to branch.

tomjen
My biggest gripe with subversion is that it worked so well, I never considered I was missing out until I discovered Mercurial.
grenade
Branching horrible? Merge-back maybe, but branching is a simple svn cp. The best thing to happen to subversion is SVK. Wrap that on top of subversion and you get most of the benefits of hg/git without needing to change your toolset.
Chris Kaminski
Chris: This is like saying a plane has a great support for take-off, but is really lousy at landings. There is not much point in branching if you cannot easily and consistently merge changes back.
glebd
+19  A: 

In my last two jobs I have been required to use IBM's Rational ClearCase and counting the ways in which this deficient and frustrating package saps my will to live on a daily basis would take me at least a week. Off the top of my head my main complaints are:

  1. No concept of a unit of work. If I check in ten changed files to fix a bug or add a feature there is no way of viewing those changes as a group ever again. Even if they have the same check in comments.
  2. Dynamic views will occasionally disappear on a reboot. Without going into details this means that files that other applications may rely on have a less than 50% chance of being there still when you restart your machine.
  3. If I check in code into my branch and then merge back into main it won't automatically check it into main with the same comment. This means that if I want well commented checkins on the main branch I'm constantly repeating myself.
  4. Practically no integration with Visual Studio (apparently this is better in 7.1, but of course we haven't upgraded to that yet)
  5. A rather fast and loose idea of UI consistency with some dialogs having buttons down the right hand side and some along the bottom. Also some windows that really need to be resizeable (contain long filenames) aren't.
  6. Rarely (but often enough that this has happened at least once to everyone I've spoken to in both companies) ClearCase will decide to add a random character into the middle of XML files.
  7. The fact that IBM change $4,600 per license for this, and people pay it.

There are literally dozens more niggles which drag my productivity away from me as I have to fight the tool, and there is a good chance that I will come back and edit this post as a way of venting my daily frustration with this.

Martin Harris
1- Use a branch to group them3- Good point7- Excellent point!
pablo
+1, it boggles my mind that people pay money for this "software". It must be sold at a golf course over a bottle of champagne...with no developers in sight.
Kent Boogaart
Been a while since I used it but: 1 - Clearcase had UCM back in 2001 for changeset support; 2 - you can make dynamic views always start at reboot; 3 - what SCM system *does* do that?! ... but I am giving you a +1 for #5 and #7 alone: the combination of UI and price is inexcusable.
Zac Thompson
@Zac T: Subversion/SVK does this when I merge branches back to mainline. It takes all my comments since the last merge, and let's me prepend text describe the changeset as a whole.
Chris Kaminski
+2  A: 

Subversion is quite slow, lacks features like offline-commit, sometimes the commit fails and requires an update, and if you have to use the @ notation to peek into your repo it's impossibly hard to use.

Bazaar is quite ok, but is mostly unsupported (by sourceforge at least). Also, I prefer the subversion model of branching/tagging.

Stefano Borini
+2  A: 

Subversion has two major drawbacks.

  • The working copy is 2x the actual size of your software. When working with large media files and multiple branches, this can get unwieldy.
  • Tagging and branching are simply copies of a trunk. This gets extremely annoying when mapping the repository directory structure to developer workspaces. I long for the traditional branching and tagging concepts.

All in all, it's a very respectable VCS compared to many of the alternatives.

Dan
Subversion uses cheap copies. From a Subversion book: "Subversion doesn't actually duplicate any data. Instead, it creates a new directory entry that points to an existing tree. If you're a Unix user, this is the same concept as a hard-link. From there, the copy is said to be “lazy”. That is, if you commit a change to one file within the copied directory, then only that file changes—the rest of the files continue to exist as links to the original files in the original directory." Sorry. -1.
unforgiven3
Dan is referring to the working copy, not the repository. The working copy keeps separate, clean copies of your current checkout so you can revert files without contacting the server.
Stephen Jennings
+2  A: 

A while back I was stuck with Serena Version Manager. It was awful. Our repository was pretty complex, and the number of promotion groups we had, and branches we had, and tags we had was so out of control that unless you knew exactly what you needed to do, good luck. Far more complicated than it ever needed to be.

Now we're using TFS (and at home I use Subversion), and I'm a happy developer.

unforgiven3
+3  A: 

Serena dimensions was very crashy. We used to restart the server every day and also on a need basis. Otherwise, it becomes very slow. I am not sure if this is an implementation issue or a product issue. Also you can refer to Eric Sink blog for lot more details about version control.

kishore
DON'T talk to me about Serena F**** Dimensions. I'd rather use VSS. I'd MUCH rather use VSS. Hell, I'd rather use a network share where every file is renamed a,b,c and indexed in excel. (come to thinkof it, that'd be more reliable and easier to use the Dimensions)
gbjbaanb
+2  A: 

Subversion (Well, Tortoise SVN; I think it's more a client issue) occasionally gets confused and I have to spend a while copying stuff aside into a scratch folder, re-adding, cleaning up, and so forth so that I can get it to do a clean update/commit without complaining about lock files.

Adam Jaskiewicz
Add SVK to subversion and it gets rid of the whole .svn/working copy mess in your project tree. I can't use Subversion without SVK, though I'm evalutating git and bzr now.
Chris Kaminski
+1  A: 

I'm currently a Mercurial user and I really like it. But it has one downside: if a revision tree is really branchy, it gets slow. A lot of that comes down to some of the design choices that were made, and in particular the fact that changes are always recorded with respect to the last change committed (rather than the parent change). But I'd still pick it over anything else.

For me now, a version control system has two sine qua non features: (1) the concept of changesets, so atomic changes stay atomic; and (2) easy branch merging without loss of information. Essentially all DVCSes have this; most other VCSes don't. (Perforce comes close, but it always bugs me that a branch merge does not preserve the sequence of changesets, and comments, from the branch.)

But if I'm in an interview and a potential employer tells me they use CVS, I will walk out of the interview. (Actually, this is a question I usually ask at the phone-interview level. You can tell a lot about a company by which version control system they use.)

Alistair Bell