Slashdot Mirror


An Illustrated Version Control Timeline

rocket22 writes "Most software developers are supposed to be using the latest in tech and see themselves as living on the edge of software innovation. But, are they aware of how old some of the tools they use on a daily basis are? There are teams out there developing iPad software and checking in code inside arcane CVS repositories. Aren't we in the 21st century, the age of distributed version control? The blog post goes through some of the most important version control systems on the last three decades and while it doesn't try to come up with an extremely detailed thesis, it does a good job creating a catalog of some of the most widely spread or technologically relevant SCMs."

244 comments

  1. VSS All the Way by Anonymous Coward · · Score: 0

    If only PHB's had a clue, we're forced to use Visual Source Safe at work. I would claim it a legacy system but they just put it in a couple of monthes ago. I think any version control is better than nothing, but I'm not sure Visual Source Safe beats the file system's snap shots that are automatically created.

    1. Re:VSS All the Way by barzok · · Score: 1

      The false sense of security you get with VSS is worse than having nothing at all.

    2. Re:VSS All the Way by mikestew · · Score: 1

      A couple of months ago? As mentioned in another post, I'm no source control fanatic. However, I think someone dictating VSS use without legacy reasons borders on negligent. "Negligent" as in the shareholders get to sue, and the executive team fires your ass when the inevitable, unrecoverable, and well-documented database corruption eats your company's IP. (Yeah, I know you could pull the backup tapes, but that would disrupt an otherwise good rant.) People knew VSS sucked even before Microsoft bought it, there's certainly no reason to use it now.

    3. Re:VSS All the Way by GooberToo · · Score: 1

      Couldn't agree more! I can't begin to tell you how much data I've lost with VSS. The worst thing is, you typically don't know or understand how completely boned you are until you actually attempt to check out your source.

      Users who willingly use VSS have likely experienced some sort of de-evolution. I wouldn't be surprised if their knuckles actually drag the ground.

    4. Re:VSS All the Way by WuphonsReach · · Score: 1

      Yeah, repository corruption was a silent killer. Not to mention the whole "you must give write access to the entire repository directory" to VSS clients. (Note: I haven't used VSS since about 2004.)

      However, it was actually functional if you put it behind a SourceOffSite server and only used the SOS client to talk to the SOS server (which then talked to the local VSS repository directory on the disk). The SOS server, since it was on the same machine, was able to isolate the VSS repository from a lot of the stupidities that would cause corruption. Having a network error between the SOS client and SOS server no longer caused corruption issues in the VSS repository.

      Ultimately, I got tired of paying the licensing costs and having to track licenses for SOS, so we switched away to SVN back in '04 or '05.

      --
      Wolde you bothe eate your cake, and have your cake?
    5. Re:VSS All the Way by satellite17 · · Score: 2, Informative

      If only PHB's had a clue, we're forced to use Visual Source Safe at work. I would claim it a legacy system but they just put it in a couple of monthes ago. I think any version control is better than nothing, but I'm not sure Visual Source Safe beats the file system's snap shots that are automatically created.

      For the love of god, if you have to use MS software, show the PHB Team Foundation Server. It does a lot more than source control and is superior in every way to VSS. If you have MSDN then it might even be free (beer).

    6. Re:VSS All the Way by b4dc0d3r · · Score: 1

      My first experience with source safe was: Install on NT server, put all my code in, make a few check ins, can't get anything back out because it broke.

      In two weeks, the fucking thing broke and stole all of my changes in a proprietary something or other. It scared me off of scm for... 8 years.

      Now, I use subversion at home, because there is no branching or merging, it's just my stuff. I do a hotcopy, then apply Par2 to the copy, and burn to a CD, whenever I remember to do so. TortoiseSVN and par2, that's what I trust. And CD burning, I suppose, although not entirely. I no longer fear making big changes to stuff I've written, I just verify my previous CD with quickpar or whatever it is and then go ahead. Database scripts, code, VBS quickies, greasemonky scripts, it's all safe.

      Work code is different, of course, we have rules and things, but if you're one person working on something on Windows it's hard to beat the Tortoise.

      The Linux model is totally different, and I agree with Linus that svn is not appropriate for Linux, but I'm one guy and I have no problem manually comparing every little thing, no automated branching or merging here.

  2. Comment removed by account_deleted · · Score: 5, Insightful

    Comment removed based on user account deletion

  3. Arcane CVS and what not by discord5 · · Score: 2, Insightful

    There are teams out there developing iPad software and checking in code inside arcane CVS repositories

    But does it work for them? If so, great! Why switch to something else if you have no real need for all those features?

    1. Re:Arcane CVS and what not by glwtta · · Score: 4, Insightful

      But does it work for them? If so, great! Why switch to something else if you have no real need for all those features?

      It's not just about features, CVS is deeply broken (tagging/branching, directories, binary files, metadata, etc). Subversion is a drop-in replacement that fixes (most) of the problems and can be used in exactly the same workflow. The two are equivalent and one is less broken - it's kind of a no-brainer.

      --
      sic transit gloria mundi
    2. Re:Arcane CVS and what not by farnsworth · · Score: 1, Troll

      But does it work for them? If so, great! Why switch to something else if you have no real need for all those features? It's not just about features, CVS is deeply broken (tagging/branching, directories, binary files, metadata, etc). Subversion is a drop-in replacement that fixes (most) of the problems and can be used in exactly the same workflow. The two are equivalent and one is less broken - it's kind of a no-brainer.

      Also, OS X ships with svn, but not cvs. I'm not sure that if you install the dev tools if that will install cvs, but I tend to doubt it.

      --

      There aint no pancake so thin it doesn't have two sides.

    3. Re:Arcane CVS and what not by jeremyp · · Score: 1

      My OS X install definitely has CVS although I'm not sure if it came with the OS or the dev tools.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    4. Re:Arcane CVS and what not by farnsworth · · Score: 1

      My OS X install definitely has CVS although I'm not sure if it came with the OS or the dev tools.

      I just picked up a mac last Friday, and I haven't installed the dev tools yet. It has svn, but not cvs. Older versions used to ship with cvs, IIRC, but not for a while. If you do an OS upgrade or migration assistant setup through the years, it's likely that cvs will be installed. But OS X does not ship with cvs anymore.

      --

      There aint no pancake so thin it doesn't have two sides.

    5. Re:Arcane CVS and what not by jgrahn · · Score: 1

      But does it work for them? If so, great! Why switch to something else if you have no real need for all those features? It's not just about features, CVS is deeply broken (tagging/branching, directories, binary files, metadata, etc). Subversion is a drop-in replacement that fixes (most) of the problems and can be used in exactly the same workflow. The two are equivalent and one is less broken - it's kind of a no-brainer.

      I have all of my code in CVS and I trust it; I've personally seen it work every day for the past twelve years. I share some repositories with my brother, who's less inclined to learn a new tool. Sticking with CVS is a no-brainer for me.

    6. Re:Arcane CVS and what not by martinlindhe · · Score: 1

      svn is broken in so many ways i cant even see your reasoning here. come back after you have had to manually resolve some "conflict" appearing out of nowhere while you are the only one working with the current files, or dealing with a "no such revision" error. svn was, and still is a piece of crap. i know, i still use it :-(

    7. Re:Arcane CVS and what not by syousef · · Score: 1

      It's not just about features, CVS is deeply broken (tagging/branching, directories, binary files, metadata, etc). Subversion is a drop-in replacement that fixes (most) of the problems and can be used in exactly the same workflow. The two are equivalent and one is less broken - it's kind of a no-brainer.

      I did a large CVS to SVN conversion earlier this year. Do you have any idea how many scripts had to be changed and what kind of testing had to be done? Drop in replacement my arse.

      --
      These posts express my own personal views, not those of my employer
    8. Re:Arcane CVS and what not by Anonymous Coward · · Score: 0

      And if you don't need any of those features? No, SVN is great at what it does, but it's not a "drop in replacement" in most cases, XCode, Kdevelop, and many other IDE's have TERRIBLE SVN support but great CVS support, and when you're working single developer or very few developers, especially with multiple projects in one repo, there is really no reason to move from CVS, it does exactly what it needs to (keep backups of previous file versions of the text only source files)

      Secondly, if you already have a CVS server that's been running for years with your existing projects in it, why convert to SVN if it gives you nothing?

    9. Re:Arcane CVS and what not by yakovlev · · Score: 1

      The two are NOT equivalent.

      I HATE that subversion doesn't have proper tagging and (to a lesser extent) branching. Our IT team wrote gobs of scripts to make SVN behave somewhat like CVS does for tagging and branching. From what I've read, they're not the only ones.

      Sometimes what I want is a tag. Ideally, a tag is a memorable string, such as "gold"

      A tag isn't a long, easy to mis-type string such as "file:///foo/bar/path/to/svn/repository/some/more/stuff/tags/gold"

      For most users, I want to be able to tell them: update to gold, make your changes there, then check them in to the shared repository, to be built into the next gold model.

      With CVS, this is: cvs update -r gold; work; cvs update -A; cvs ci -m "gosh that was easy."

      With SVN, this is: svn switch file:///arcane/long/path/to/svn/tags/gold ; work ; svn switch file:///arcane/long/path/to/svn/trunk ; svn ci -m "Why are SVN tags so long?"

      With CVS, if I check in with an outdated tag on the trunk, it'll fail and tell me. With SVN, it will blindly alter the contents of the tag.

      Honestly, I understand why the SVN developers wanted to separate policy from function, but in the case of tagging and branching syntax, that was a mistake. They should have created a bunch of syntactic sugar for doing things like tagging and branching using a "standard" server-side layout where most of the ugly path names are hidden from the user and tags behave like named versions (i.e. tags) and branches behave like branches instead of independent directories, all of which can use short, easy-to-remember names. If the administrator chooses to use some other non-standard repository layout, that's their problem, and the syntactic sugar will just fail.

    10. Re:Arcane CVS and what not by glwtta · · Score: 1

      export MYREPO=http://long/and/complicated/url/to/my/project
      ...
      svn swtich $MYREPO/gold

      There. I just saved your IT team gobs of scripts.

      (I'm not actually a fan of the /tags, /branches layout, I keep copies at the same level as /trunk).

      Personally I almost never use switch, seems a lot easier to just keep separate projects for branches, but we're a small team, I can see how it might matter more for others. And tagging is just not that big a deal in Subversion, the global revision numbers work better for most purposes CVS tags are used for (and no, you don't memorize them, hence the 'most'). Never mind that CVS has to touch every file in your tree to tag or branch.

      I do agree that a feature to 'lock' read-only copies would've been nice, but it can be added with a one-line commit script, if you really care. Hell, it's about as much work to write a script to figure out your tag URL based on the current working copy.

      So, yes, I stand corrected: this is one area where the Subversion approach is better and it doesn't make sense to force it act exactly like CVS.

      --
      sic transit gloria mundi
    11. Re:Arcane CVS and what not by julesh · · Score: 2, Interesting

      With SVN, this is: svn switch file:///arcane/long/path/to/svn/tags/gold ; work ; svn switch file:///arcane/long/path/to/svn/trunk ; svn ci -m "Why are SVN tags so long?"

      The usual approach is to not use svn switch at all, but to check out your tags or branches into a separate directory, which works just fine. Alternatively, you could use (as another poster suggested) an environment variable to specify your repository basem or one of the many GUIs that make using switch easier. Most development environments have such an integration. Even emacs has one, although I've never tried it.

      With CVS, if I check in with an outdated tag on the trunk, it'll fail and tell me. With SVN, it will blindly alter the contents of the tag.

      The normal approach to solving this problem is to install a pre-commit.sh script on the server that rejects any operations other than copy in the tags directory.

    12. Re:Arcane CVS and what not by Anonymous Coward · · Score: 0

      Or, since what the OP wants is apparently a global text reference to a revision:

      svn switch file://gold

      Yes, you're putting a pile of non-hierarchical tags in the toplevel directory. But that's the kind of stupid thing CVS users want to do, because they still don't understand version control basics.

  4. Re:My god, it's full of troll. by Anonymous Coward · · Score: 1, Informative

    It's also an advertisement. Sigh.

  5. SCCS? by Anonymous Coward · · Score: 1, Informative

    SCCS predates RCS. Why isn't it on the list?

    1. Re:SCCS? by doug · · Score: 1

      SCCS is a decade older than anything else on this chart. Perhaps it was left off to avoid stretching it out too much.

      - doug

    2. Re:SCCS? by jeremyp · · Score: 1

      Indeed and there were version control tools for operating systems other than Unix before then. Presumably the article - which was rubbish - left them off because there were no mobile phones around at the time.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    3. Re:SCCS? by KlomDark · · Score: 1

      He couldn't find a cell phone that old?

  6. Meh. by HeckRuler · · Score: 2, Insightful

    Geez, he's right, I've been using things like grep and gcc just because I'm familiar with them and they perform the task at hand. Time to upgrade to the hip and new version that does the same damn thing in a slightly different way!

    Not that I'm against progress, but it's a matter of weighing the hassle against the gains. Forcing the new kids to learn the old tools can be annoying, but good for them. Likewise, showing grandpa that there's a diff with side-by-side comparisons is probably a good idea.

    1. Re:Meh. by chipschap · · Score: 1

      I still use RCS because it does what I need, which is merely tracking single-developer projects and single-writer authoring. It works, it's simple, so what more do I need. And syncing an RCS directory from desktop to laptop with an online sync tool is more than good enough. I should set up GIT repositories *why*? No thanks.

    2. Re:Meh. by Short+Circuit · · Score: 2, Interesting

      Geez, he's right, I've been using things like grep and gcc just because I'm familiar with them and they perform the task at hand. Time to upgrade to the hip and new version that does the same damn thing in a slightly different way!

      Not that I'm against progress, but it's a matter of weighing the hassle against the gains. Forcing the new kids to learn the old tools can be annoying, but good for them. Likewise, showing grandpa that there's a diff with side-by-side comparisons is probably a good idea.

      Don't forget bitrot. Enough other people move to $new_tech, and those of us who were productive with $old_tech suddenly see things break.

  7. Re:I do live on the edge. ;-) by Anonymous Coward · · Score: 1, Funny

    ~500 megahertz K6 laptop w/ ~192K RAM
    -single core P4 desktop w/ 512K RAM

    I bow before your leet minimalist systems!

  8. pardon, your ignorance is showing by rubycodez · · Score: 0, Troll

    Distributed version control systems are only useful for certain types of projects, e.g. a Linux kernel, and useless for others e.g. a three-person development team making an rpc-xml insurance claim submitter.

    1. Re:pardon, your ignorance is showing by Anonymous Coward · · Score: 1, Insightful

      It's extremely useful even for a single developer.
      You can still use DVCS systems as if they were centralized, without any inconvenience.
      I'm not even going to bother to list them myself, as wikipedia does a fine job already.
      http://en.wikipedia.org/wiki/Distributed_revision_control

      Every single project I've worked that didn't use DVCS, I missed it alot. DVCS is how it should be done, and CVCS is inherently flawed.

      However, I also think the article sucked.

    2. Re:pardon, your ignorance is showing by Cyberax · · Score: 1

      Nope. Distributed systems are ALWAYS more useful than centralized ones for source code control.

      Only sometimes their advantages are not that significant.

    3. Re:pardon, your ignorance is showing by rocket22 · · Score: 1

      I do agree, and sometimes is not even about being distributed, is because the older systems suck in terms of branching and merging.

    4. Re:pardon, your ignorance is showing by icebraining · · Score: 3, Insightful

      DVCS can use the exact same workflow as non-distributed VCS, and they're faster in many cases - including not having to connect to a central server for each and every commit.
      If it costs you to change now, don't, but if you're starting a new project, I see no reason to choose CVS.

    5. Re:pardon, your ignorance is showing by rubycodez · · Score: 1

      bullshit, the three developers I gave (real) example always must work inside company on local network. name one advantage of distributed system for them

    6. Re:pardon, your ignorance is showing by rubycodez · · Score: 1

      even stinky ol' subversion does branch and merge well enough for small project with a few devs.

    7. Re:pardon, your ignorance is showing by mikestew · · Score: 2, Insightful

      I'm mostly a single person team, and I find DCVS quite useful (the reasons I won't bore anyone with). For my workflow, centralized (SVN in my case) was limiting me.

    8. Re:pardon, your ignorance is showing by icebraining · · Score: 2

      Central machine with repo is down - nobody works.
      They can commit locally many times and merge that to a single commit per feature before ushing to the central system.
      Git uses much less space than SVN - Mozilla's repo size: CVS - 3GB, SVN - 12GB, Git - 300MB.

    9. Re:pardon, your ignorance is showing by chthon · · Score: 1

      Feature branches and isolation of production and development code : branch a repository and work on it in isolation, then merge it later back in the mainline. I use it for myself in that way. There are things that sometimes need to be done fast, while in parallel I also need to be able to implement larger changes.

    10. Re:pardon, your ignorance is showing by Rob+the+Bold · · Score: 1

      It's extremely useful even for a single developer. You can still use DVCS systems as if they were centralized, without any inconvenience. .

      For a one-man team, wouldn't centralized and distributed VCS kind of merge, if you'll allow me a version control pun?

      --
      I am not a crackpot.
    11. Re:pardon, your ignorance is showing by TemporalBeing · · Score: 1

      Nope. Distributed systems are ALWAYS more useful than centralized ones for source code control.

      Only sometimes their advantages are not that significant.

      I'd have to disagree. There are many instances were DVCS are always superior. However, there are times - such as in corporate environments - where you simply do not want that kind of information floating around the organization. In those instances a Centralized VCS is superior as the main advantage (distributed version control) is in those situations the biggest disadvantage of a DVCS.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    12. Re:pardon, your ignorance is showing by ebuck · · Score: 2, Insightful

      That's a lie.

      A commit in a non-DVCS is much more than a commit in a DVCS.

      With DVCS, they rename the fast, easy part to "commit." The actual merging of your repository with another across a network is one of those items they never discuss, as it is to be performed later. Benchmark a Commit and a Push in a DVCS against a Commit in a non-DVCS, and you'll start gaining my respect as a person who's not fudging the numbers.

    13. Re:pardon, your ignorance is showing by ebuck · · Score: 1

      If you are a single person, why don't you have the SVN repository in your working environment? You know that you can use "svnadmin create" to create a file based repository without the need for a SVN server. You just checkout of the file:/// URL and you never have to worry about the network being down.

    14. Re:pardon, your ignorance is showing by dslbrian · · Score: 2, Interesting

      Mercurial's SVN re-education page does a good job of describing the advantages.

    15. Re:pardon, your ignorance is showing by cdwiegand · · Score: 1

      Or maybe the fact that svn takes over 10 minutes to bring up log files for us off the server with a repo of about 30 "websites" each with 250+ files and a total of ~3000 revisions across all of it. Compare that to git where git log runs (like everything else) locally, so I'm not killing the same server everyone else is using. Oh, and its results are back in less than 15 seconds most of the time. I used to use svn, and resisted git as it was so CLI oriented. (And yes, I did learn the CLI commands.) But when TortoiseGit came out, that really lowered the bar and we moved - there's no going back.

      --
      . Define sqrt(x) as something really evil like (x / rand()), and bury it deep. Watch your coworkers go nuts.
    16. Re:pardon, your ignorance is showing by Qzukk · · Score: 1

      Awesome site! That was exactly what I needed. Even down to the point where I admitted that I've been braindamaged by a lifetime of using CVS.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    17. Re:pardon, your ignorance is showing by mikestew · · Score: 1

      Because I work on multiple machines, and would frequently do work on the bus (meaning I'd have to somehow sync later with the home boxes) when I worked a regular day job. If SVN could be made to fit that smoothly, I didn't see it. Admittedly, it could have been my ignorance. But after reading up on that "git" these kids today are using, I thought it was worth at least a look (along with Hg).

      Git solved my problems out of the box. I now have other reasons to like git (or just DCVS in general), and the more I use it the more I'm glad I ditched SVN.

    18. Re:pardon, your ignorance is showing by Cyberax · · Score: 1

      "I'd have to disagree. There are many instances were DVCS are always superior. However, there are times - such as in corporate environments - where you simply do not want that kind of information floating around the organization."

      That's just an empty string of words. What do you mean be 'not floating around'? Access controls? So use them on per-repository level, duh.

      Information leaks? Developers can just use working copies for that.

    19. Re:pardon, your ignorance is showing by Cyberax · · Score: 1

      1) Local history. It's much faster than in SVN.
      2) Fast operations - git is faster, though in this case it's not that much important.
      3) Ability to work offline and to have private branches.

      And 4) git is not worser than SVN.

    20. Re:pardon, your ignorance is showing by shish · · Score: 1

      Benchmark a Commit and a Push in a DVCS against a Commit in a non-DVCS, and you'll start gaining my respect as a person who's not fudging the numbers.

      As part of my workflow, what I actually want to get done is a commit to record history many times per day, and I only sync once a day or so -- so why should the DVCS scores for a common action be crippled just because the non-DVCS forces you to do extra work?

      It's not comparing apples to oranges, it's comparing an apple to an apple plus an orange -- I'm only interested in apples, so the first one does deserve to win for being less wasteful

      --
      I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
    21. Re:pardon, your ignorance is showing by shish · · Score: 1

      useless for others e.g. a three-person development team making an rpc-xml insurance claim submitter.

      Speaking as half of a two-man team, I've found that switching from subversion to git decimated the amount of VCS-related fuss we have to put up with -- we can now both make many small commits all day long (small patches = easier to trace which patch introduced a bug), with merge conflicts only coming up at agreed merge times when we are both available to discuss conflicts.

      Plus, even if you use git in centralised mode, it's simply better as a bit of software :P (local copy of history = faster browsing; the ability to automatically run through a set of commits testing each to see where a bug started; nice bits of polish like coloured output and automatically piping through less when appropriate; better branching and merging; etc etc etc)

      --
      I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
    22. Re:pardon, your ignorance is showing by TemporalBeing · · Score: 1

      "I'd have to disagree. There are many instances were DVCS are always superior. However, there are times - such as in corporate environments - where you simply do not want that kind of information floating around the organization."

      That's just an empty string of words. What do you mean be 'not floating around'? Access controls? So use them on per-repository level, duh.

      Information leaks? Developers can just use working copies for that.

      With DVCS systems, like git, every node in the system hosts the whole repository. Aside from the initial access to the system, there's not much you can do per access controls - that's the nature of distributed systems where the information exists in the "cloud" and there is no centralized location.

      You can only really only do access controls when you control the whole system - thus you require a centralized system instead of a decentralized system.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    23. Re:pardon, your ignorance is showing by macbutch · · Score: 1

      Git would still be much faster for almost every operation than Subversion.

      We have a small team but switching to Git from Subversion meant that check outs actually took measurably less time despite being a full copy of the repository rather than just the most recent revision.

      Admittedly Subversion is probably a particularly bad example of non-DVCS but still...

    24. Re:pardon, your ignorance is showing by icebraining · · Score: 1

      So what? The push is done unattended when I'm finished and go do something else, not while I'm actually programming, so it doesn't waste my time.
      A commit in a DVCS does what needs to be done. Non-DVCS wastes my time doing useless stuff in each commit.

    25. Re:pardon, your ignorance is showing by macbutch · · Score: 1

      Yes but Git is still much much better. :)

    26. Re:pardon, your ignorance is showing by Cyberax · · Score: 1

      So?

      Just split data into separate repositories. Problem solved.

    27. Re:pardon, your ignorance is showing by EvanED · · Score: 1

      If SVN could be made to fit that smoothly, I didn't see it. Admittedly, it could have been my ignorance.

      Aside from putting the repo on your laptop and using it as a server which you connect to from your desktops, and being screwed if you leave your laptop behind, it wasn't just your ignorance.

      The closest to what you want that you get is a tool called svk, which is a (heavy) wrapper around Svn that sort of turns it into a DVCS. By the time you're messing with that you might as well just be using Git if you have the choice.

    28. Re:pardon, your ignorance is showing by bfields · · Score: 1

      bullshit, the three developers I gave (real) example always must work inside company on local network. name one advantage of distributed system for them

      Simpler setup, no need to configure a new network service just to get started, much faster history browsing (even on a fast local network), ability to try out lines of development privately without giving up completely on version control for them, ability to keep working when the server goes down, simpler backup of the history (just backup any repo), ....

    29. Re:pardon, your ignorance is showing by Darinbob · · Score: 1

      But many distributed systems I've seen are not supersets of centralized systems; they have different feature sets. For example, if you had a distributed version control system that could not do branching, it would most definitely not be more useful than the centralized system. I'm sure you can build a crappy distributed CVS system that people would hate to use and which would be inferior to SVN in almost all ways except one.

    30. Re:pardon, your ignorance is showing by grumbel · · Score: 1

      In theory, I completly agree. A DVCS can do everything a centralized can do and more. In practice however things look a little different. All Open Source DVCS currently still lack proper support for narrow, shallow and sparse checkouts, thus you can't download only a single directory, you have to always download the whole repository. Which makes implementing some basic workflows that you get with SVN impossible or at least highly impractical to implement with a DVCS.

    31. Re:pardon, your ignorance is showing by macbutch · · Score: 1

      Git will be faster and (much) more reliable.

      CVS can lose your history without you noticing, Git won't do that. I've had subversion repositories become corrupted. On the other hand a) if a Git repository is corrupted then you know and b) in a worst case you can restore from one of the clones (as every developer has a clone of the central repository).

    32. Re:pardon, your ignorance is showing by julesh · · Score: 1

      Git would still be much faster for almost every operation than Subversion.

      My main problem with git (as a non-expert user who tried it for about an hour, once, so I'll readily admit I could be wrong about this) is that it seems that it changes sharing my changes with other developers from a two-step process (dev1$ svn commit; dev2$ svn update) to a three step process (either dev1$ git commit; manually inform dev2 that they need to pull changes from dev1; dev2$ git pull dev1, or dev1$ git commit; dev1$ git push; dev2$ git pull centralserver). While this may not sound so bad in a situation with just 2 developers, it seems to get linearly more complicated with each developer added.

      Now, if you have somebody whose role in the project is to review other developer's changesets and then decide whether or not to include them (i.e. the situation of most open source projects, and what git was specifically designed to be good at) this problem disappears; everyone simply submits their changes and pulls from a single source and there's no issue, but that isn't how most professional development teams work. We trust each other to make changes. We automatically incorporate each others' changes without oversight. We don't want to have to manually pull in all the other developers' work all the time. We just want to perform a single merge of all the recent changes before we perform a final run of the tests and then commit.

      Now, I might be wrong, git might support a good way of doing this. But I don't see it mentioned in any of the tutorials I read, and it isn't obvious from the manual pages, or anything like that.

      Yes, I'll happily accept that each individual operation is faster than using svn. And if I could find a sensible way of working with it that didn't involve more developer work (even if it is just clicking a sequence of GUI buttons where once I only had to click one of them), and hence wasted more of my time than it saves, I'd love to switch. But it seems to be more complicated to use, and therefore not worth the effort (at least for my team here).

    33. Re:pardon, your ignorance is showing by julesh · · Score: 1

      Simpler setup

      Really? When I tried to set up git for a three-developer situation earlier this year, I came away puzzled and not entirely sure I'd understood it right. Sure, for a single developer it might be easier, but setting up push/pull aliases using egit (the integration for eclipse, the IDE we use here) involved a number of obscure dialog boxes with options that I don't understand and weren't explained in any of the tutorials I read. Whereas with subversion, all we need to do is use svnadmin to create a repository on the server, get one team member to start a new project and share it to the appropriate URL and the others then import from the same URL.

      no need to configure a new network service just to get started

      SVN tunnels over SSH, which is enabled by default on every Linux install I've used in the last 15 years.

      much faster history browsing (even on a fast local network)

      I'll grant this is true, but as getting the history of an entire project on my server here takes less than 3 seconds, and it's something I do at most once a week, I don't really see the issue.

      ability to try out lines of development privately without giving up completely on version control for them

      I don't really understand the point here. What's wrong with just creating a branch and using that?

      ability to keep working when the server goes down

      While this is true, at least where I am, one of the dev team would be responsible for fixing the server anyway, and the others would probably not be able to achieve an awful lot because the same server hosts the bug tracker, documentation wiki, task list, email server, and basically all the other tools we use for the work we do. Not to mention the virtual server we deploy to for interactive testing. And even with SVN, they'd still be able to continue working until they next needed to commit, i.e. they can finish what they're currently working on.

      simpler backup of the history (just backup any repo),

      As opposed to backing up the central repo, which is guaranteed to contain all of the history, rather than potentially having some of it missing if people are working on private branches?

    34. Re:pardon, your ignorance is showing by oiron · · Score: 1

      This! I'm using git-svn at work purely because I want branches that can actually be merged back without sacrificing a few barnyard animals at a satanic altar.

    35. Re:pardon, your ignorance is showing by MagicM · · Score: 1

      I believe the boring parts are exactly what this discussion needs. There are enough people saying "X works for me".

      I read your follow-up comment about developing on two separate machines. Did this simply get solved by using GitHub? If there had been a third-party SVNHub site would that have fixed your limitations as well?

    36. Re:pardon, your ignorance is showing by mikestew · · Score: 1

      I was trying to keep the reply constrained to arguing against parent Troll Boy's ridiculous premise. But since you asked...

      Part of the problem was solved with GitHub (which could have been done with my own external-facing machine), and later Unfuddle. But to solve the problem of keeping the machines synchronized, something external-facing wasn't needed at all. I could have just pushed/pulled to the other machine(s) when I got home. One of the differences with git (or other DCVS) is that each machine has a copy of the repository. The end result is that you can push/pull the changes to any other repository that resides on another machine. As far as I can tell with SVN, there is the repository. As someone else pointed out, the SVN repository could be kept on the laptop, but it would have to be running when I'm on the desktop and screwed if the laptop isn't around.

      Which brings us to the second part of how a DCVS solved my problem. Something like SVNHub does exist in the form of Unfuddle (I use them for git repositories, and would recommend them). But Unfuddle's SVN support wouldn't fix the problem of working on the bus. Back before my own thing turned into my day job, I was in the mode of "start a side company nights and weekends" outside of my day job. I'd fix bugs on my 45 minute bus ride. In bug-fix mode, I could knock out a few in that 90 minute round trip. Here are the modes for SVN (as I understand SVN) and git:
      SVN: fix three bugs, two of which I fixed over eight hours ago. Get home, go to check in. Check-in comment is something like: "three bug fixes. Null pointer dereference, menu fix and one that I can't remember because I've worked a full day since fixing it". All fixes are crammed into one big check-in. If it breaks, back all of it out. No one-to-one relationship between check-ins and bugs (or features, or what have you).

      git: fix those same three bugs in the same time frame. Do a commit (SVN's "check-in") after each bug fix, with descriptive message. I can do this because I have a local copy of the repository and therefore can do granular commits even on the bus. Get home, push to Unfuddle or a local machine and build. If it breaks, back out the one bad commit/check-in.

      Okay, so I'm working out of an office in my house. No more bus rides (or at least not as many), would I still recommend git for the single developer? Yup. Anybody that's worked at home knows you sometimes have to get out of the house. I pick up the laptop (after pulling changes) and go to the coffee shop. Wife takes the laptop someplace, I use the desktop. Point is, I never worry about where the repository lives, because it lives on every machine. For me, that simplifies things a lot.

      Not directly related to the question, but git's branching and merging are trivial compared to SVN, at least to me. Working on a feature, create a local branch, get it working, merge to mainline and push it out. OTOH, if I went completely the wrong direction, delete the branch and start over. All of it is one or two entries on the command line, and I don't give a second thought to creating a branch for the most trivial things (bug fixes, for instance). SVN just didn't seem as easy for the same tasks. It wasn't why I started using git, but it's one of the things keeping me using it.

      Finally (and I thank you for even reading this far), why Unfuddle vs. GitHub? IIRC, Unfuddle gives more bang for the buck (as in actually US bucks; I use private repositories for the commercial stuff). But it was mainly because of better bug tracking and tying bugs to commits/check-ins. There's some lightweight project tracking, too, that's sufficient for my needs. Some may scoff that it's overkill for a one-man team. But I'm old and forgetful, and tracking customer bugs via email (and internal stuff via PostIt) isn't going to work. I also don't plan to remain a one-man team forever.

    37. Re:pardon, your ignorance is showing by macbutch · · Score: 1

      Sure, those are all pretty reasonable comments. I'll describe two ways of working with Git that I think address this somewhat.

      I guess first up I would say that Git doesn't really push you towards a specific way of working so if there is a particular way that you want to do things then chances are you can do that with Git (that said there are definitely ways to do things that would be less worthwhile than others).

      We switched to Git from Subversion where I work about 6 months ago and it's worked extremely well for us. We have a small team but it is spread across two or three countries (some of us move around a bit). For us we use a central model where there is a single 'authoritative' repository which we all push and pull from. So I don't share my repository directly with the other developers we all push and pull from the same central one (which we integrate with Hudson for CI).

      So really we're not using the distributed for the sake of sharing code directly between us but because having access to the full repository (and did I mention that Git is fast?) allows us to do stuff we couldn't before. Once you've done the initial clone Git is very very fast (and things like svn log are much much faster with git because you don't have to do any network operations). Essentially we still have a central repository that update from and commit too simimlarly to SVN it's just that we can continue committing without a network connection and split our commits into sensible chunks of work that go into the central repository etc.

      Now, in terms of doing something really distributed, you can do that too more easily than you described (though I've not really done it in any seriousness so not sure whether it is worth setting up). If you give me access to your repository, I give you access to mine and we both have access to a third repository. We can set up our own repositories to pull from both the others - so it is not so much more difficult to fetch the work of the other repositories into our own working tree. There is a tiny bit of extra work here - generally Git commands are bit more fine grained than something like Subversion so you do end up with more commands. For my use (and for my team) I've written some simple scripts that tie some stuff together (so I run 'git up' which simulates 'svn up' or 'cvs up' you could easily do the same for fetching from multiple repositories if you wanted ... ).

      Generally I wouldn't really recommend working that way for a small group. What would make more sense would if you had two teams working on a product (maybe a team doing support and a team doing a product release) the release team might want to pull changes from the support team as they're finished and make sure that they're incorporated into the next release. Generally I think you'd have one person doing that and pushing it into a central repository for the release team (so each team would have a central repository but you might pull changes from one into the other). All this is far easier with Git than with Subversion (and I've worked in situations in the past where something like what I just described would have saved a lot of heartache and angst between teams).

      But generally your point about Git being more complicated to use is absolutely correct and, sadly, when you ask for help you don't always get a nice answer (sometimes it's more along the lines of 'well the manuals say you shouldn't do that so you did it anyway now you're screwed and it serves you right for not understanding the internals of our magically wondrous system). So... Git *is* awesome, I'm really glad that my company uses it but it does have a very steep learning curve.

      In terms of ease of use I quite like the look of Kiln which is some proprietary code wrapped around Mercurial and looks relatively easy to use (in general my impression is that Mercurial is easier to use). That said - Git is free...

      I hope that helps I'm certainly not an expert with the finer points of Git but I'm happy to tell you what I know if you're interested (even if you stay with whatever you use if you're more informed then you're still going to make better decisions)....

      -mark

    38. Re:pardon, your ignorance is showing by MagicM · · Score: 1

      Thank you for typing all of this out; it was very informative. The ability with git to commit much more freely without affecting others using the same repository seems like a very big plus. Immediately being able to "save off" the three separate bugs you mentioned is nice, and on long multi-day coding sessions I could see myself "saving off" the results at the end of each day. It's like having a local SVN repository on your machine with a very simple way to push to the repository later on.

      At our company we're still working under the old check-out/change/check-in model, and the idea of allowing multiple people to make changes to a file at the same time (let alone merge those changes together when they're both done) would probably terrify many here. So we're still many steps away from "hey let's all use git"! At least now I understand some good reasons why we might consider git.

  9. Welcome to hell by Transfinite · · Score: 2, Informative

    We use TFS here. Because some suit that shouldn't have been making the decisions he did, who was also probably wined and dined by some MS suit. Was told it was the best thing since sliced bread. Every developer to a man hates it. It sucks. god knows how much this 'privilege' costs us.

    1. Re:Welcome to hell by Simon+(S2) · · Score: 1

      Our .NET devs like it. I prefer the more simple trac+svn (I do small Java projects with my team).
      Why do you hate TFS?

      --
      I just don't trust anything that bleeds for five days and doesn't die.
    2. Re:Welcome to hell by rocket22 · · Score: 1

      TFS is a a corporate beast. Good for managers only. You know, give a try to Git, or Mercurial, or Plastic.

    3. Re:Welcome to hell by Compaqt · · Score: 1

      How's trac installation these days?

      --
      I'm not a lawyer, but I play one on the Internet. Blog
    4. Re:Welcome to hell by Tridus · · Score: 1

      TFS is actually tossed in with every MSDN subscription now. So if you're in a shop that pays for MSDN, then going to TFS didn't cost you anything in terms of the software. For small .net shops, its actually pretty convenient since you also get issue tracking, test tracking, and a bunch of other stuff tossed in at the same time.

      I had Codice pitch PlasticSCM to me once. It was interesting, but for what we were doing there was nothing in there that particularly mattered and thus the price couldn't be justified. I think that's the problem with a chart like this, you've got things he's bashing that for certain workloads are actually perfectly adequate.

      (Amusingly a few months later I had the same guy who had pitched Plastic email me again saying he was now with a new company due to the relative immaturity of Plastic as a product. Ah, salesmen.)

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    5. Re:Welcome to hell by ocularsinister · · Score: 2, Interesting

      Not the GP, but as someone who has used several VCS, I have to say that there is nothing, and I mean NOTHING to like about TFS. Its nearly as bad as VisualSourceSafe, and I'm not joking when I say I think they built a .Net service to wrap a VSS back-end. Besides the god-awful performance (it is sloooooow), you can't work off-line (which is great, because TFS will often stop working), the user interface is random and inconsistent (some places will let you view a file's history, others won't for example). It has an obsessively complex security model that, no doubt, keeps middle management feeling all warm and fuzzy - but often breaks. The integration with Windows File Explorer is bat-shit-crazy and SLOOOOOW. The whole system seems to try and track all local changes, in real time, and fails - editing a file with notepad instead of in VisualStudio/TFS will confuse the hell out of it. Getting latest version doesn't always get the latest version - we've got used to using 'force get latest' and risking over writing local changes. And that's before you consider that the technology, even if it worked well, is a decade or more out of date! Oh, and as an added bonus, your code and history gets locked up in a proprietary format. Avoid at all costs.

    6. Re:Welcome to hell by mikestew · · Score: 1

      God's not the only one that knows, I was responsible for pricing it last place I was at. First, it's old-school enterprise pricing as I could barely figure out how much it would be for our shop, let alone yours. Figure about $500US for client license, $3K for the server.

      It's actually pretty damned good for bug and project tracking, and keeping it all tied together. If your manager's any good, just forget status reporting as it can all be pulled from TFS.

      But in the context of source control, TFS sucks ass. Slow, branching sucks, and the workspaces paradigm is mostly a poor implementation of what branching should have been, IMO.

    7. Re:Welcome to hell by Anonymous Coward · · Score: 0

      TFS is based on SVN. Really. The SCM back-end of TFS is derived from SVN. The rest of it is derived from MS Project. There's a crapton of other glue in there, and it requires a SQL Server instance.

      I'm really not sure where all the TFS hate comes from. It's quite nice if you're doing normal Visual Studio development. It's heavily integrated with VS and, while there's a learning curve, it's hardly difficult to understand. TFA's incessant whining about branching and merging also doesn't apply, since I doubt creating a branch takes less than the effort of three mouse clicks anywhere else. (Really. Right-click on a folder in the Source Control Explorer[1], select Branching & Merging > Branch...[2], then click OK[3].) Merging is similarly easy.

      It's only really "painful" if you're not using VS properly (and therefore are using TFS improperly as well). VS is a very constrained IDE, with very powerful automation for pre-set project templates, but generic or misused templates will cause you headaches every time. The SCM integrated into VS (whether it's TFS, VSS, or a third-party plugin) is similarly constrained. You don't need to do manual steps in Git when there's automated TFS. If VS isn't configured to use your SCM in an automated way, then you're going to have trouble. The pre-set project templates have all of the SCM configuration done for you so you don't have to mess with it yourself (repeatedly, for each new project).

      Working offline is as tricky as realizing that you have a local copy to fiddle with as you wish, and when it can't automatically check things out as you edit them, you can just manually do it later.

      Editing outside of VS can be a tricky thing to sort out... for about 3 seconds. Then you realize that "check out for edit" doesn't overwrite local changes (which is why you can work offline). Check out/check in seems like a tedious process until you realize that you can do it (1) in bulk and (2) for any damn thing at any time.

      There is no integration with Windows Explorer. I'm not sure what you're looking at, but TFS doesn't have that. Source Control Explorer is the GUI way of interacting with TFS, and TF Power Tools is the CLI way. There are several things available in the CLI (and backing libraries) that aren't in the standard GUI, but it's mostly things like generating changeset diffs (useful) and manually altering the repository (bad!).

      The "getting the latest version" bug is a PITA, I agree. It seems to be related to the fact that we upgraded from TFS 2008 to TFS 2010 RC2 to TFS 2010 RTM. Somewhere in the RC2 upgrade, something got b0rked. Projects started natively in TFS 2010 RTM don't have the issue.

      And if you want your code and history out of TFS, it's all in the SQL Server backing database (and its file-stream repository). You can simply fire up Management Studio and query your code out of it and into whatever format you want.

    8. Re:Welcome to hell by Anonymous Coward · · Score: 0

      # apt-get install trac # trac-admin "/var/www/trac" initenv --inherit=/etc/trac/trac.ini "My Trac" "sqlite:db/trac.db" hg "/var/hg/myrepo"

    9. Re:Welcome to hell by Simon+(S2) · · Score: 1

      very easy :)
      you have to thinker a bit if you want to have multiple projects with one installation, but nothing that takes more than ½ an hour.

      --
      I just don't trust anything that bleeds for five days and doesn't die.
    10. Re:Welcome to hell by rcuhljr · · Score: 1

      TFS isn't /that/ bad, but it's not that great either. One of my co-workers created git-tfs based off of git-svn bridge which lets us dump an existing TFS directory into a local git repository, bringing in all the history from the TFS repo. Several of us who prefer git simply use that to get a local repo, do our development work in git, and then use it to bundle up a TFS changeset when we are done. It's a bit of work but it's nice to be able to instantly switch out of my dev branch if I need to test something in the base site or any of the other workflows where git is superior. Also not having the entire source tree write locked is a pleasant change, I like just being able to fix a sql file without having to hunt it up and check it out first.

    11. Re:Welcome to hell by surgen · · Score: 1

      Not bad, I set one up about a year ago, without a package manager and it was OK. Downloaded it, had to google up what to put in the WSGI file, then added it to the apache config and edited the trac.ini. Painless other than a few config files. We don't use it that heavily but I haven't had any administrative headache at all with it.

    12. Re:Welcome to hell by ocularsinister · · Score: 2, Interesting

      "TFS is based on SVN. Really."

      Really? This seems very unlikely as there is no mention in the license and the repository is a SQL Server database. Even if this were true, Subversion is a technology that is in decline. DVCS offers substantial advantages.

      "I'm really not sure where all the TFS hate comes from."

      It comes from using SourceSafe, Subversion, ClearCase and, more recently, Git. Doesn't stand up to any of them except possibly SourceSafe - though that's hardly a great accolade.

      "It's heavily integrated with VS..."

      And that's part of the problem. What if I don't/can't use VisualStudio? For example, our database design is done in Erwin. The hoops we have to go through to make sure that TFS doesn't get its knickers in a twist! Maybe its because Erwin generates binary files (TFS sends the whole file not diffs, which makes the whole thing even slower than it is normally). In contrast, Notepad++, WinMerge, File Explorer and even VisualStudio seamlessly integrate with Tortoise/SVN making my workflow seamless and painless. The difference between the two is striking. Another example: We generate SQL scripts from Erwin and then check these scripts into TFS. When TFS sees that these files have changed (even though it is usually just the date stamp that has changed), it will download all the SQL scripts (there are lots of them!). For some reason this process takes 10 times longer than a normal refresh - I can wait 20 minutes for it to complete, instead of about 2 minutes. Why does it even need to download the files that are the same except for the date stamp? 20 minutes x once a week x a four year project... Wow, what a waste of time!

      "Check out/check in seems like a tedious process"

      Check out/Check in IS a tedious process when you realize its completely redundant. TFS has an option to remove this requirement, however management seems to think this is a good idea as 'it helps avoid merges'. Face/Palm. Case in point: Our developers are split across two sites, and I often fly between them. While working on the Subversion based project, I worked on the plane. My workflow was essentially uninterrupted. Now I'm working on the TFS based project, I am forever having to bring up file explorer to change Read/Write permissions. If I want to add a file to a project... well, its easier to wait until I arrive at my destination. With a DVCS my workflow would be *exactly* the same - and I'd even have a full history of all the files!

      "There is no integration with Windows Explorer."

      Yes, there is if you install the TFS Power Tools. I don't recommend it though as it seems to screw the performance of Windows.

      TFS is not a source control system, its a developer control system designed to allow middle management to fiddle with security, lock files and generally dick about with the development process. If you really want that kind of functionality, I'm sure there are better ways. Avoid at all costs.

  10. Online applications by falldeaf · · Score: 1

    Speaking of modern CVS repositories, one thing I haven't seen is version-ing for web based applications and sites. The one I use is a custom job built by our corporate office and it works very well but it's missing a lot of features. Every once in a while I google for any projects like this and haven't had anything turn up. Anyone know of any?

    --
    check out the Mp3 Garbler I built!
    1. Re:Online applications by 19thNervousBreakdown · · Score: 1

      What special needs does a website have for versioning that isn't covered by the usual tools?

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    2. Re:Online applications by falldeaf · · Score: 1

      I guess not a whole lot, honestly... but our custom job keeps a development, staging and production version of our code, each that has it's own versioning and is sort of like it's own site, but doesn't have all the nice stuff from a full cvs like diffs and patching. I think that this functionality could probably be done with some bash or perl scripts to move the files around for you. I did see though that sparkfun.com used subversion and is now using git for their sites code base, so maybe your question has answered mine...

      --
      check out the Mp3 Garbler I built!
    3. Re:Online applications by icebraining · · Score: 1

      You can just have different branches, and then use git push to update the production branch on the server's repository.

    4. Re:Online applications by VortexCortex · · Score: 1

      I'm not sure what you mean by "version-ing for web based applications and sites"

      I have SSH access to my web host.
      The web app code resides in a remote Git repo on the server.

      This is how I update my web based application.

      git checkout remote-master
      git merge local-changes
      git push

    5. Re:Online applications by falldeaf · · Score: 1

      No that makes sense, but for our major site there's three different versions of basically the same code base as a development, staging and production. But icebraining pointed out to me that I could keep three different branches. I've never been at the top level planning stage for large projects so I've never thought out and set up a cvs system for a project. I've only ever been a user. To be clear I don't have say so over the major site that I work on anyway I'd just like to understand the process I guess. I'm working on a web-app project now that I would like to put into a version-ing system. It might just be delusions of grandeur making me think there will be other developers later on, though :)

      --
      check out the Mp3 Garbler I built!
    6. Re:Online applications by falldeaf · · Score: 1

      Interesting, that makes sense, I think I may try setting up a theoretical system like that. Thank you for your advice, good sir.

      --
      check out the Mp3 Garbler I built!
    7. Re:Online applications by nschubach · · Score: 1

      Ah, I've been dealing with this extensively recently.

      Web development is sometimes not done locally as application development. Without a file synchronization utility you practically have to work on the dev server if you want to see your changes immediately (edit file, save, refresh page.) There is a plugin for Eclipse that that will sync files on save, but it's a one way copy and if anything changes on the server (from another team member) your file sync will copy your version of that file up overwriting their changes. Needless to say, this irritates some people.

      We are currently "given" Serena PVCS to use because "we have licenses for that already" and the Eclipse plugin stores all change information in the same folders as the source code (on the development server.) Most other versioning solutions I've seen do as well. As you can guess, this tremendously slows down development because Serena goes out and updates the status of all the files on the remote server and with a ~1000 page site it takes literally 30-45 minutes just to start Eclipse using the plugin.

      There are no (that I have found) version management solutions that store versioning information locally and synchronize that versioning information transparently among the team. DVCS systems would require that the "main" trunk be on the dev server and literally every file edit would have to be merged from your local VCS to the trunk and that just doesn't work.

      We literally use our VM as an "every so often" check in and cannot use the IDE tools because of the "version information in the same location as source" model that VCS programs use.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    8. Re:Online applications by cloudmaster · · Score: 1

      So, you'd like some kind of Web Distributed Authoring and Versioning tool? I wonder if there's anything out there which would do this thing; a good name for it would be WebDAV. Why, they would even register http://www.webdav.org/ for information! ;)

      Seriously, this is the protocol Subversion uses if you use the apache module. It works well. And if you look for information on managing a web site with subversion, you'll likely find quite a few examples of doing exactly what you're asking for in later comments. I might have even written one of them about 8 years ago when I set up our web developers to do precisely what you asked for. ;) If you're working on windows, look in to TortoiseSVN for client purposes (unless you're using a tool which already integrates with a versioning system of some sort).

    9. Re:Online applications by falldeaf · · Score: 1

      Haha, I should probably be red faced but instead I'm grateful. After reading through the page a bit that's exactly what I'm looking for... Duh. XD Thanks for clue-ing me in!

      --
      check out the Mp3 Garbler I built!
  11. Re:My god, it's full of troll. by walshy007 · · Score: 1

    Finally, i'll go out and say it, the hate-on for SVN is overrated. A part from a few world class developers who, for some reason, have shitty network connections and thousand patches to sort though, it's mostly cool-kids overcomplicating their lives solving "problems" they never had while developing their blogging software, not working in an office, and imagining they are Linus Torvalds?

    While I agree svn isn't bad to work with, having a local repository can be VERY handy once you're accustomed to the workflow.

    Enough so that when dealing with svn repositories it's rather nice to be able to import a complete copy of the repo using git-svn, albeit it takes somewhat longer etc.

    With svn I could not do version control based things during a long commute such as finding out who wrote a specific line of code so I can make a note to yell at them, with git I can. One of many things.

  12. Hey! by vrmlguy · · Score: 1

    I'm stuck using SCCS, you insensitive clod!

    --
    Nothing for 6-digit uids?
    1. Re:Hey! by blair1q · · Score: 2, Funny

      Stuck? You're probably the least stressed of us all. Using sccs is the code-control equivalent of moving to Napa and buying a vineyard.

  13. CVS May be Old, but... by Anonymous Coward · · Score: 0, Troll

    "If it ain't broken, don't fix it."

    1. Re:CVS May be Old, but... by JerkBoB · · Score: 4, Insightful

      "If it ain't broken, don't fix it."

      Right. And CVS is horribly broken. So it's been fixed. :P

      --
      A host is a host from coast to coast...
      Unless it's down, or slow, or fails to POST!
    2. Re:CVS May be Old, but... by Anonymous Coward · · Score: 0

      It is broken. I'd like to rename files and directories, and track those changes. With CVS? Good luck..

    3. Re:CVS May be Old, but... by oiron · · Score: 1

      Branching, directories, merging...

      Some things are just broken in CVS...

  14. TMA's for me by digitaldc · · Score: 1

    Too Many Acronyms

    --
    He who knows best knows how little he knows. - Thomas Jefferson
  15. Like Hudson? by Wolvenhaven · · Score: 1

    If it's anything like Hudson's graphical build timeline, it's a cool feature that made me go "neat" but I have honestly never used it to look stuff up on our CI server.

    --
    Orwell was an optimist.
  16. Source control is so political by MobyDisk · · Score: 4, Insightful

    All of "big" companies I've worked for use ancient out-of-date source control. The first one used VSS (late 90's, so it wasn't so unusual at the time) but then around 2000 moved to PVCS. All the developers assumed that someone got kickbacks because there's no reason to move to an older, more expensive, inferior product. Now I work at a Fortune 500 company that also uses PVCS. Their reason: not a soul in the building has ever used anything else. I explain about the features of modern source control and people look at with with either marvel (it can do that!!??), or disdain (how dare you question my source control system).

    I don't know why this one piece of software evokes such illogical responses. Oh well.

    1. Re:Source control is so political by blair1q · · Score: 1

      Because this one piece of software is ingrained in the company's quality process. With most tools, if you use something different, nobody cares, they're just glad you're getting your work done. With CM, you have to use the same tool everyone does. When you start proposing to change that tool, everyone has a stake in it, and an opinion of it, and of your opinions.

      And this is mild. Can you imagine if everyone had to use the same editor?

    2. Re:Source control is so political by Anonymous Coward · · Score: 0

      I actually enjoyed PVCS the one place I used it. The idea of not needing branches and the promotion system were a change, but worked well if the process in place made proper use of them.

      Also, someone mentioned this already, but saying PVCS is bad because the initial release was decades ago is like saying Linux is bad because it's initial release was 20 years ago. Older, maintained software tends to be better than equivalent new software since they've had decades to get the bugs out of it.

    3. Re:Source control is so political by rocket22 · · Score: 1

      Is like when you explain merging and then people start saying: "hey, but I can't trust a program merging code for me". God!

    4. Re:Source control is so political by MobyDisk · · Score: 2, Informative

      P.S.
      - One company used their own internal source control. That was by far the worst.
      - All the small companies and contracts used either perforce or svn.

      Just pointing this out since I meant to contrast the relationship between company size and tools.

    5. Re:Source control is so political by slapout · · Score: 1

      Because at some point you have to pick a product and go with it if you want to get work done. Sure you can reevaluate every so often, but you can't spend all your time constantly upgrading to the latest thing. People are given a tool, they learn it and get work done.

      --
      Coder's Stone: The programming language quick ref for iPad
    6. Re:Source control is so political by WuphonsReach · · Score: 2, Interesting

      I don't know why this one piece of software evokes such illogical responses. Oh well.

      Well, unless you're completely insane, you don't change SCMs more then once a decade. Entire processes get built around the current SCM (QA, deployment, development, archival, etc) and that's not something easily changed.

      So it's never as simple as swapping one command for another. The thought processes are slightly different, everyone has to update their workflow or custom-written glue tools and you may lose version history.

      (Distributed SCMs are almost worth the effort, if I actually needed that feature more then once a year.)

      --
      Wolde you bothe eate your cake, and have your cake?
    7. Re:Source control is so political by l0b0 · · Score: 1

      Show, don't tell. git-gui, TortoiseSVN, gitk, Trac+Git plugin, git interactive rebase. Then demonstrate the awesome speed of a DVCS to someone who does hundreds of commands per day - It'll blow their minds.

    8. Re:Source control is so political by Anonymous Coward · · Score: 0

      editor wars? text is text.
      version control? you MUST use whatever the rest of the team is using (or have an interop layer).

    9. Re:Source control is so political by jrumney · · Score: 1

      The first one used VSS (late 90's, so it wasn't so unusual at the time) but then around 2000 moved to PVCS. All the developers assumed that someone got kickbacks because there's no reason to move to an older, more expensive, inferior product.

      Unless PVCS got a lot worse between when I was using it in the mid 1990s and 2000, there is no way I would call it an inferior product to VSS. My recollection of PVCS is that it was basically RCS with a graphical UI available for it. VSS on the other hand came with crippled branching, a proprietary repository format that was easily corrupted, and prevented you from checking out a second copy of the branch you were working on so you could do a pristine build.

    10. Re:Source control is so political by T.E.D. · · Score: 1

      We're still using VSS here in 2010. We have the crown jewels of a 4000+ person company with 20 sites worldwide "protected" by it.

      I'm taking donations into my pity jar.

    11. Re:Source control is so political by Anonymous Coward · · Score: 0

      We just get to handle the paint-job of one of the jewels but the same and a 250,000+ person company. We have all the buzzwords and all the agile waterfalls management can come with, but commit day is panic day for us and the myriad of other teams. We also get to use MS Excel for anything you can imagine.

    12. Re:Source control is so political by MobyDisk · · Score: 1

      Agreed. Although after 15 years, it is probably time to update to another tool. :-)

      And to your point, they are at the point where using this tool is a constant headache. Every few years they get a new version of PVCS that isn't compatible with the old one. So some developers have 2 and 3 versions on their machines. Those versions aren't intended to install side-by-side to they have batch files with INI file hacks to make it work. In other cases they keep a computer in someone's cube that is the designated machine to access that project.

      PVCS isn't proactively maintained, when Windows 7 came-out it was a good year or so before PVCS worked on it. And some features still don't work right. (I think they skipped Vista support entirely.)

    13. Re:Source control is so political by MobyDisk · · Score: 1

      Well, unless you're completely insane, you don't change SCMs more then once a decade.

      Agreed - the thing is, PVCS is 15+ years old and completely obsolete feature-wise.

      Entire processes get built around the current SCM...that's not something easily changed.

      In our case, they have to change that process every few years because as PVCS is upgraded, the database format changes. Rather than spend time migrating the format, they just leave the repository alone. So developers need multiple versions of PVCS and various hacks to get the old version to run (separate PC, virtual machine, batch-file that hacks INI files).

      It would have been cleaner to just keep everything maintained, on the latest version, than to jump through hoops. When they found they couldn't access old repositories from Windows 7 (because it was a 16-bit app!) they wanted everyone to have a license for Microsoft Virtual PC + a license for the Windows on that virtual machine + the overhead of putting those virtual machines on the domain + the storage space for those virtual machines.... gah! It would have been cheaper and easier just to run the upgrade once every 3 years.

    14. Re:Source control is so political by MobyDisk · · Score: 1

      Granted, VSS and PVCS aren't *that* far off. You are right about VSS's limitations, and PVCS's origins. They were both from the same era, both obsolete today.

    15. Re:Source control is so political by benhattman · · Score: 1

      I don't know why this one piece of software evokes such illogical responses. Oh well.

      Please let me enlighten you then. When it comes to almost any other decision, the group that needs to buy into the choice is more limited. When picking a language, for instance, the program leads might get a say and first level management, but anyone above that just wants a bullet chart that proves those guys made the right choice. When it comes to version control, a lot more people are going to have their say. The developers will try to vote. The configuration management team will have a say. Management up to near the top will want proof that nothing will ever be lost. Shoot, I bet even the lawyers get involved.

      Throw into this mess that the most common corporate version control systems do suck, and you've got a bunch of people who have had it proven to them a couple times that ALL available solutions are bad. They just kind of assume that yeah clearcase is terrible, but all versioning is bad so let's stick with what we know.

      All that means that unlike any other tool, version software is almost impossible to change within an organization.

  17. Advertising disguised as history lesson. by fahrbot-bot · · Score: 4, Interesting
    First, the history/time-line is simply a lead-up to the plasticscm product.

    Second, the article doesn't even mention SCCS, developed in 1972 (and still available), so his history lesson is lacking some completeness and perspective.

    Third, remarking, "It [CVS] is outdated now, but it worked in the 90s! (If you have it, just walk away and go on to something else!)" -- as well as the other snobbish comments about other (older) systems -- is simply narrow-minded. CVS is completely satisfactory for many, many projects. Contrary to later comments in the article, I've used, and still use, CVS in several commercial products and it works just fine.

    Real lesson: Newer is not always better; more features are not always needed.

    --
    It must have been something you assimilated. . . .
    1. Re:Advertising disguised as history lesson. by rocket22 · · Score: 1
      Hey, wasn't Linus Torvalds himself who said "you must be brain dead to use CVS"?? Don't shoot the messenger!

      Small companies need to be creative, share information, tell stories... I guess that's the goal of the post. If the Plastic SCM guys were Microsoft they would be on slashdot everyday, don't you think?

    2. Re:Advertising disguised as history lesson. by Anonymous Coward · · Score: 0

      If the Plastic SCM guys were Microsoft they would be on slashdot everyday, don't you think?

      And if cows were angry bulls milking them would be quite hazardous.

    3. Re:Advertising disguised as history lesson. by rocket22 · · Score: 1

      XD. I can't beat that!!

    4. Re:Advertising disguised as history lesson. by fahrbot-bot · · Score: 3, Insightful

      Hey, wasn't Linus Torvalds himself who said "you must be brain dead to use CVS"?? Don't shoot the messenger!

      Linus is not a god and not everything he says should be taken as gospel. He gets a LOT of things wrong. Put down the cool-aid. :-)

      Hey, I'm successful and independently wealthy too, and I like CVS. Quote that! :-) Now, I admit that I haven't extensively used most of the tools in the "article", but I haven't needed what they offer above and beyond CVS.

      As for the cell-phone analogy in the "article", I still use a Qualcomm QCP-1900 cell-phone from 1998 and, surprise, it still manages to work great as a phone. Paid $200 for it outright (no contract), which works out to $16 a year and still have a $15/month no-contract account. I only need it to make phone calls. Sometimes, it pays to stick with what you have and what works...

      --
      It must have been something you assimilated. . . .
    5. Re:Advertising disguised as history lesson. by david_thornley · · Score: 2, Insightful

      Linus Torvalds sometimes shoots his mouth off for no good reason, and he tends to look at everything in terms of how it would work for the Linux kernel.

      The fact is that CVS would be bad for the Linux kernel development process, which really does need a distributed VCS. You can kinda sorta make something like that work on CVS, but you'd wind up with a nightmare, and if you wanted to spend the time to write everything you'd need to make it work you might as well write something like Git instead.

      CVS is perfectly usable as a centralized system, despite its deficiencies, and it's no more arcane than Subversion.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    6. Re:Advertising disguised as history lesson. by icebraining · · Score: 1

      But git is faster, so there are reasons to use it even if you don't need the new features.

    7. Re:Advertising disguised as history lesson. by rocket22 · · Score: 1

      CVS is more arcane than SVN. It locks the whole thing every time you create a branch or a tag (label). It doesn't have merge tracking, no atomic commits, no good branching... well, yes, it's an outdated beast and a nightmare to use unless the team is so lazy they prefer to stay with it.

    8. Re:Advertising disguised as history lesson. by fahrbot-bot · · Score: 2, Insightful

      But git is faster, ...

      Yes, given the example on your link, if I ever need to checkout the *entire* FreeBSD repository, I'll think of GIT. Otherwise, I'm not losing much sleep over the speed difference. :-)

      From a practical standpoint, people will use what their employer is already using. Here, we mainly use CVS. There are pockets of SVN and (perhaps) GIT, but no one is interested in converting and, more importantly, retraining the users and rewriting the management/utility scripts.

      Another example, I also currently use SCCS to revision system data files on a Solaris project because it comes with the OS out of the box -- cannot install something else -- and it works just fine.

      Bottom line: If I ever need to use something else, I'll learn it, but here and casually at home, I already know RCS/CVS and they work just fine.

      --
      It must have been something you assimilated. . . .
    9. Re:Advertising disguised as history lesson. by EvanED · · Score: 1

      Contrary to later comments in the article, I've used, and still use, CVS in several commercial products and it works just fine.

      One of us is probably a basket case then. I whine about most programs I use, but a program is in rare company if I complain about it as much as CVS.

      I hate it enough that if I was considering starting to contribute to an open source project and the project I was considering used CVS, that alone would be enough for me to drop that idea.

    10. Re:Advertising disguised as history lesson. by icebraining · · Score: 1

      You can use a Git client with a CVS or SVN server.

    11. Re:Advertising disguised as history lesson. by JohnWiney · · Score: 1

      And SCCS was far from the first version control system. The major features SCCS introduced was automatic generation of the change files (thanks to diff) which made it much easier to use, and (made possible as a result) keeping the latest version as the "base" version, so applying the change files produced earlier versions, instead of later ones - that produced much better performance for the most common task, getting the latest version.

    12. Re:Advertising disguised as history lesson. by swillden · · Score: 1

      Now, I admit that I haven't extensively used most of the tools in the "article", but I haven't needed what they offer above and beyond CVS.

      SCM is one of those areas of technology where you can easily believe that something is unnecessary until you use it -- at which point you discover that it's impossible to live without it, in spite of the fact that you lived without it just fine for decades.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    13. Re:Advertising disguised as history lesson. by raylu · · Score: 1

      It doesn't apply to checking out large repositories. It's faster at pretty much everything (except git clone vs svn checkout, which it still comes close for).

      See http://johan.kiviniemi.name/blag/svn-diff-git-diff-speed/ and http://thinkvitamin.com/code/why-you-should-switch-from-subversion-to-git/, particularly the "Not Just for Teams of Coders" section.

      --
      Maurice Wilkes, debugging, 1949
    14. Re:Advertising disguised as history lesson. by T.E.D. · · Score: 1

      SCCS was the first thing I looked for on his chart, so I was as disappointed as you.

      However, the article itself does mention SCCS quite a bit. Just not on a topic by itself.

    15. Re:Advertising disguised as history lesson. by Skuto · · Score: 1

      >CVS is completely satisfactory for many, many projects. Contrary to later comments in the article, I've used, and still use, CVS in several commercial products
      >and it works just fine.

      A bit like programming large systems in assembler, yes?

    16. Re:Advertising disguised as history lesson. by Anonymous Coward · · Score: 0

      Kool-Ade = drink drunk by the brainwashed.
      Cool-Aid = Trendy assistant.

      HTH HAND

  18. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    Yeah, the article seems to conflate old with bad, and advocates using more complicated technology because its "better", without really considering what "better" is. It's folly to think that distributed version control imposes no overhead, it does. Now whether or not the overhead is worth the features you gain really depends on what your needs are. Open source projects have a MUCH different workflow(tending to involve a large # of globally distributed users, no need to secure code against unauthorized reads etc.) than a lot of small shops which have a small # of developers(and maybe no full-time SCM), tend to be located in the same office etc. The extra overhead of getting a distributed SVN vs. the dead simple SVN setup isn't always worth it.

  19. slightly one sided... by haute_sauce · · Score: 1

    also leaves out SCCS (a precursor to RCS), as well as layered tools/integration of tools ONTO the SCM (like eclipse -> SVN, etc.)

    the article was a good intro to the history of SCM, however i am amazed they didnt just do a box, and put their tool in the upper right hand corner...

    1. Re:slightly one sided... by rocket22 · · Score: 1

      Yes, should have done that: highlight their tool instead telling so many good things about Git, don't you think?

  20. Re:My god, it's full of troll. by C3c6e6 · · Score: 2, Insightful

    I couldn't agree more. In my previous job, I had a colleague who wanted to convert me from SVN to Bazaar (http://bazaar-vcs.org/).

    He told me "it was very simple to use, you only have to..." and then started drawing a very complicated diagram on my whiteboard.

    Personally, I thought it was complete overkill for the two-man project we were working on.

  21. Re:I do live on the edge. ;-) by Arancaytar · · Score: 1

    Are you able to use any software written in the last decade? Modern desktop applications seems to soak memory like water.

  22. Re:I do live on the edge. ;-) by JackCroww · · Score: 1

    supposed to be using the latest in tech and see themselves as living on the edge of software innovation.

    I do. I live on the tail edge:

    ~500 megahertz K6 laptop w/ ~192K RAM -single core P4 desktop w/ 512K RAM

    192K? 512K? Kilobyte? You sure about that? Not Megabyte?

    --
    "Ayn Rand is a bloody socialist compared to me." - Robert A. Heinlein
  23. Re:I do live on the edge. ;-) by rocket22 · · Score: 1

    You're so right!!

  24. Re:I do live on the edge. ;-) by Compaqt · · Score: 1

    Brings back memories of (barely) running the first version of Visual C++ on a 386SX.

    --
    I'm not a lawyer, but I play one on the Internet. Blog
  25. Subversion branching and merging by 19thNervousBreakdown · · Score: 4, Interesting

    I hear all the time how terrible Subversion is at branching and merging, but I can't really see any issues with it. Am I missing something, or is this all based on pre-1.5, when it didn't have merge tracking? Granted, it was fairly brain-dead to not track what revision a branch occurred in or what revision it was last merged to a particular other branch (or the head), but as far as I can tell, comparing it to AccuRev which I use at work heavily and is supposed to be fantastic at merging (it's ... ok), there's little difference beyond the terminology.

    Can somebody explain what it handles so badly? I feel like I'm not missing something I should be. I like Subversion, probably just because I know it, and use it for my home projects, but if there was an actual benefit (and decent cross-platform tools, TortiseSVN is fantastic, I love working on my linux box but doing graphical diffs on the same working copy over a Samba share) I'd love to switch to something better--I know I said I like Subversion, but it's more like how you like a kevlar vest, it's better than the alternative, which in this simile is bullet holes in my torso.

    --
    <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    1. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      Merging in git is simply git merge , in SVN it's something complicated requiring you too know the revision when you branched and other stuff, something like 'svn merge -r a:b ../../trunk' from inside the branch.

    2. Re:Subversion branching and merging by MobyDisk · · Score: 1

      Am I missing something, or is this all based on pre-1.5, when it didn't have merge tracking?

      AC replies with:

      in SVN it's something complicated requiring you too know the revision when you branched and other stuff, something like 'svn merge -r a:b ../../trunk' from inside the branch.

      19NervousBreakdown: I think the AC just proved exactly what you were saying. Everyone thinks it is hard because it was hard pre-1.5.

    3. Re:Subversion branching and merging by EvanED · · Score: 5, Interesting

      It's possible I'm missing some shortcut syntax or something, but just the Subversion syntax for creating a branch and merging is just terrible. Compare git checkout -b my-new-branch to either remembering the whole repository URL or running svn info and copying and pasting it, then running svn copy some://really.long/url/to/your/repository/trunk some://really.long/url/to/your/repository/branches/my-new-branch then svn switch some://really.long/url/to/your/repository/branches/my-new-branch. And merging is similar.

      You can avoid this syntax by checking out the whole damn repository and using working-copy paths, but this has its own set of severe drawbacks (e.g. now your svn copy takes a long time).

      These drawbacks are made smaller by Tortoise (which is awesome) since you can just edit the existing URL in the switch dialog, but it's still pretty darn ugly.

      I like Subversion, probably just because I know it, and use it for my home projects, but if there was an actual benefit ... I'd love to switch to something better

      I'd really encourage you to give Git a shot. Pick a project and use it for that project. It takes some getting used to, but it's not too bad, and once you are used to it it provides a number of really nice benefits even if you're just a single person working on your own projects. And there is a TortoiseGit that works well. (Just be aware that TortoiseGit attempts to hide what Git calls the index. This makes it act more like TortoiseSvn from your standpoint, but I did run into a problem once that was caused by mixing use of TortoiseGit and the command line git client in one repository.)

      (From my own standpoint, I've heavily used all of CVS, Svn, and Git. I hate CVS with a passion, and for a long time thought that the improvements you get from moving from CVS to Svn were enormous in comparison to moving from Svn to Git. I still think this is true, but as I've used Git more and more, I think the Svn to Git change brought about rather more benefits than I initially considered even for single-person and centralized projects.)

    4. Re:Subversion branching and merging by dsuarezv · · Score: 2

      It becomes really ugly when you start refactoring code. Renamed and moved files are killer to merge. Even in 1.6, I'm afraid...

    5. Re:Subversion branching and merging by c++0xFF · · Score: 2, Interesting

      Read the post you're replying to! That's all changed since 1.5. Now SVN knows when you branched and what you've already merged together.

      Read about it here.

      For most branching, the command would be a simple 'svn merge http://svn.example.com/repos/calc/trunk' from within the branch. The most complicated part is specifying the location of the branch to merge from (trunk in this case).

      1.5 did wonders for SVN.

    6. Re:Subversion branching and merging by Entrope · · Score: 1

      Last time I used Subversion (1.4.something), renamed and moved files are killer to *review history for*. On one project, I had foo.c for a few hundred revisions, renamed it to bar.c, and many revisions later created a new foo.c. When I asked Subversion to show the content of foo.c as of revision 50 (the original file), Subversion claimed foo.c did not exist. As far as I could tell, it was trying to find the contents of the new foo.c as of revision 50. Hate.

    7. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      I've found it worthwhile to point a shell variable to each repository I'm using. For example, working on project X you can do "svn ls $SVNX/tags" to get a list of tags.

    8. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      Merging is what is finally going to make me switch from CVS one of these days.

    9. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      Im a bit of a git fanboy, but that sounds like it's working properly. if I ask for what a file currently in my repo looked like 50 revisions, i dont want to be shown the contents of some other file that happened to have the same name because of renaming shenanigans.

      i guess the test would be if you stopped trying to outsmart your tools and asked it what bar.c looked like 50 revisions ago; if it shows you the old version of foo.c then I'd say the tool is completely correct and your expectations of anything different are broken

    10. Re:Subversion branching and merging by JPyObjC+Dude · · Score: 3, Insightful

      I too have used Subversion since it was in pre-release (0.8) I think. When I started doing research on Source control, my managers said "Use VSS". I disliked MS at the time and still doo and thus avoided that path. I came across the thesis by the author of RCS (great read) and researched about RCS, PVCS, CVS and SVN. SVN was a dream come true when I saw it. Tortoise SVN was the icing on the cake. I have since continued to use SVN and have converted many others to SVN away from VSS and other tools. I love SVN still and use it daily and will not be switching any time soon.

      Regarding the post, I don't really like hearing is that "All major open source projects" are moving away from SVN. Sorry but there are many still using SVN and will continue to do so. For instance FreeBSD, which is a huge project, who are still using SVN today. Also, saying that SVN is wrong is wrong. SVN is wrong for some groups but very right for others.

      Also, people are constantly mis-reading Linus's comments on SVN. Linus was just dissing SVN for his uses and was tired of the evangelical SVNers nagging him to use it. I appreciate that his code models are different and require different SCM tools and that a SVN centralized model does not work. But this does not mean that SVN is wrong for everyone.

      SVN is valid for many groups, teams, around the world and will continue to be so for the foreseeable future.

      - JsD

    11. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      SVN Branching is atrocious. Trying doing development with a mainline, 3 branches, sub-branches on those, and then try to figure out if you implemented a change, and merged it across multiple branches how that happened. As an example, Clearcase, while not being free, is easily worth whatever it costs for that functionality alone, when doing product line development for something that will be active for 20+ years (say avionics), and were there will be millions of file changes over the life time, as well as many developments occuring simultaneously.

    12. Re:Subversion branching and merging by WuphonsReach · · Score: 1

      It becomes really ugly when you start refactoring code. Renamed and moved files are killer to merge. Even in 1.6, I'm afraid...

      Yeah, one of the big things I wish SVN would have done from the start would have been to allow some sort of unique-identifier as an alternative way to identify a particular file/folder. So you could say svn://myserver/myrepos/UUID as a shortcut for referring to a file deep down inside some directory tree. From my cursory inspection of GIT, it's something that GIT seems to get right?

      This issue also comes around to bite you when you're using svn:externals and need to refactor the file names or folder names that the externals are pointing at. You'll end up breaking everything that pointed at the old location names.

      Renames/Moves are supposed to eventually become first-class citizens in the repository of SVN. Not done as "delete/add" behind the scenes. But I don't know if that will make 1.7 or some future version. It still won't fix the unique ID issue though.

      --
      Wolde you bothe eate your cake, and have your cake?
    13. Re:Subversion branching and merging by rundgong · · Score: 1

      I agree. Git and mercurial supposedly makes branching much easier. What they don't tell you is that they only make the simple part easier. The simple part would here be to actually move a piece of code from one branch to another branch.

      The real difficult part is when two branches start to deviate. When you make a fix in one branch and need to fix the same issue in the other branch that looks quite different. What should the code look like in the other branch given the code change in the first branch. This is what is hard about merging. This is still hard no matter what version control system you use.

    14. Re:Subversion branching and merging by Prien715 · · Score: 3, Interesting

      I used SVN for the past 5 years and I thought branching and merging was a pain. Well, actually, I didn't think it was a pain, mostly because I didn't know any other way.

      Then I tried Git. And Hg. I haven't looked back. TortoiseHg works great BTW;)

      From a day-to-day workflow standpoint, I find I get far fewer merge issues when working with either tool; basically, you are forced to run an "svn update" before you can run an SVN commit. And unlike SVN, if you do a bad merge, it's much easier to go be back and redo. Additionally, if you merge 100 bug fixes from the "stable branch", both Hg and Git preserve the history of the bug fixes. So if you do "svn blame" the line that fixes the nasty stack corruption bug, you'll see "Fixed nasty stack corruption bug when doing X/Y/Z" rather than "Merged from stable branch". Yeah, you can go back and do detective work and figure it out with SVN, but don't you have better things to do?

      Also, they've changed my entire workflow. With a distributed system, I'll commit code locally ("OK, this mostly works."). But since the feature isn't 100% done, there's no reason to put it in the main code tree for all the developers to look at. That way, if I manage to screw something up (say cause a nasty crash that corrupts the stack), I can update back to these prior "mostly working" revisions. SVN forces you to either create a branch every time you want to work on a feature (in which case, it's a pain to update from the trunk...merging your code back becomes painful), keep a bunch of uncommitted code, or commit 1/2 working code you'll finish later. With Git and Hg, I commit early and often.

      Honestly though, try Git or Hg. That's the best way to see its advantages. I'm trying but it's like trying to explain the advantages of a high level language to an assembly language coder: the assembly coder is perfectly happy, but doesn't think he "needs" all these "fancy" features since he has no real concept what they mean.

      I tried to convince people at my last company to switch, and it didn't happen. At my current one, I just said "trust me guys" to a bunch of more senior developers. We made the switch from SVN. I've been thanked numerous times by all of them.

      --
      -- Political fascism requires a Fuhrer.
    15. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      It can be quite easy to mess up when you do continuous merge/rebase stuff on several tracks, and it is in no way obvious or documented what the correct way to do it is. It's even quite easy to mess up simple merges if not paying attention.That said, it is technically user error (PEBKAC), and avoidable. The tool is competent. I do get the feeling that some of the newer tools are better at avoiding these happenings though, and also that they are much better at handling merges from multiple sources due to how they track the merge trees - but I haven't actually tried them.

    16. Re:Subversion branching and merging by Anonymous Coward · · Score: 1, Informative

      git cherry-pick COMMIT_SHA_OF_FIX

      oh noes! so hard, so complex! wait, no! you just didnt bother to learn the tool

    17. Re:Subversion branching and merging by EvanED · · Score: 1

      Oh wait, no! You just didn't bother to think about what the poster you replied to said.

      What magical invocation of git will tell you exactly which COMMIT_SHA_OF_FIX you need to port? (Remember, it may not just be one, and it may not be the last k commits either.) And what happens if that patch doesn't apply cleanly because there is some other change between the branches? What magical git invocation will figure out the semantic changes that need to be made so that that patch will actually work?

    18. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      why my shortsighted friend, the magical invocation you'd use to look when someone fixed something would be

      wait for it...

      git log BRANCH_NAME

      i know, i know; how the hell is someone supposed to guess that your type git log to see the log, it is a bit complex you see. what do you do when it doesnt merge cleanly? well you fix it of course, JUST LIKE YOUD HAVE TO DO WITH EVERY OTHER VERSION CONTROL SYSTEM.

      troll harder. loser.

    19. Re:Subversion branching and merging by EvanED · · Score: 1

      i know, i know; how the hell is someone supposed to guess that your type git log to see the log, it is a bit complex you see. what do you do when it doesnt merge cleanly? well you fix it of course, JUST LIKE YOUD HAVE TO DO WITH EVERY OTHER VERSION CONTROL SYSTEM.

      Yes, you have to with every other version control system.

      But THAT WAS THE POINT of the original poster. It's sort of an Amdahl's law-type argument: if most of your effort is going into looking through the logs to figure out what patches you need to apply, making sure they apply cleanly when they can, and adapting the patches when they don't, switching to a VCS that makes the rest of the process painless still leaves most of the difficulty with merging.

      In my experience (which, admittedly, is meek compared with many, but I have worked with both Git and Subversion a lot, including on moderately-sized teams), the differences mostly boil down to the following:

      • Git has a mindset of "branching is good" behind it, while Subversion has somewhat of a mindset of "branching is bad"
      • Git's command-line syntax for creating and manipulating branches is dead simple in comparison to Subversion's obnoxious crap (really? you need to use full repository URLs in day-to-day operation? who's the genius who came up with that?)
      • The two of these together leads people to use branches differently: Git people create branches for smaller things and merge more often; longer, more painful to merge branches are more common in Subversion. This feeds back to (1).

      Since Subversion implemented change tracking, basically all the operations that you do in one system have a reasonably direct correspondence in the other. You said git cherry-pick TREEISH was the magic that let you apply a change from another branch. But svn merge -cREV PATH does more-or-less the same thing. Git's SHA-1 becomes Subversion's revision number, and then you "just" need to specify the PATH, which isn't hard to come up with. (Take your path relative to the current branch's root, then append that to the path to the branch. Could easily be done by svn proper given just the name of the branch for repositories that follow the typical trunk/tags/branches layout if the devs weren't too set in their ways.) And of course there's an svn log too, but you knew that.

      The two systems are close enough one is not substantially easier to use than the other when compared to the difficulties you face merging with any system.

    20. Re:Subversion branching and merging by swillden · · Score: 2, Interesting

      SVN is valid for many groups, teams, around the world and will continue to be so for the foreseeable future.

      SVN is particularly excellent when you use GIT as the front-end. You get all of the super-easy local branching and merging, history rewriting and lighting speed of GIT for everyday use, and when you're ready to push your work to the rest of the team, you publish it to SVN.

      BTW, yes, SVN branching and merging has gotten much better since merge tracking was added, but it's still too slow and clunky for effective use with the "branch per feature" pattern of development. It can work, but GIT runs circles around it.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    21. Re:Subversion branching and merging by JPyObjC+Dude · · Score: 1

      Thanks for the pointer. Right now I only maintain simple SVN depot's and with little collaboration so it is pretty light weight and little branching or merging required (if at all). My big Depot's are in P4 and required by my current employer and I maintain a strict Trunk=Prod Branch=Dev CR model. It is slow but steady as long as my team follows the rules :). P4 is pretty heavy weight but it reasonably fast.

      I will do some research on GIT for fronting SVN in the future when I have time to play outside in the OpenSource domain again.

    22. Re:Subversion branching and merging by swillden · · Score: 1

      I will do some research on GIT for fronting SVN in the future when I have time to play outside in the OpenSource domain again.

      This will get you started: http://www.kernel.org/pub/software/scm/git/docs/git-svn.html

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    23. Re:Subversion branching and merging by MtHuurne · · Score: 1

      Branching without merging works fine in SVN. It is different from most other systems by using a directory structure for branches and tags, which means you have to mess with URLs when creating branches and tags. Still, no major problems here.

      Branching with merging had the tracking issue you described: what was the last time that branch was merged into this branch? People who were really bothered by this probably migrated to different tools and didn't see it fixed in SVN.

      Another set of problems still exists though because of the way SVN is designed: in SVN you merge trees instead of commits. A merge is done by taking a working directory with one branch, applying a series of commits from another branch to it and finally committing the result to the first branch. This means that only the result of the development from the other branch is merged, but the exact steps that were taken are lost.

      Let's say that at some point you find a piece of code that doesn't seem to make sense. You'd probably like to know who wrote it and what the intended purpose was. If you look in the output of "svn annotate" or a web SVN view, you'll see the code was added when merging a series of commits from another branch. You must then run "svn annotate" again on the last revision that was included by the merge to figure out which actual commit introduced the code. If code flows between a lot of branches, this kind of archeology gets very tedious.

      Sometimes you don't want to merge all changes from a branch. For example, you have recently released version 1.2 and are now working towards 1.3 in one branch, while you have another branch that is destined to become version 1.2.1, a bugfix release. If someone fixes a bug in the 1.3 branch, that commit must be merged into the 1.2.1 branch. You can do this in SVN, but you'll have to manually construct a commit message like "Merged r1234: <copy-pasted commit message from r1234>" or you'll lose the metadata. In for example git all this is a single command (cherry-pick).

      Some people do new feature development in separate branches. Whether this is a good idea is another matter, but that's a question about how you organize your development rather than about version control, in my opinion. Let's just assume that you are in this situation either because you chose to or because it was unavoidable. Then you probably want to keep the feature branch in sync with the branch it was created from, both to avoid "big bang" integration problems when it is finished and because your development might depend on changes made in the original branch since the branch point. Because there is parallel development, merging changes from the original branch will introduce conflicts from time to time.

      In SVN, you solve those conflicts before you commit the merged code. Because of this, the commit contains both the merged changes and the conflict resolution. If something went wrong in conflict resolution, it is later non-trivial to figure out what part of the commit was merged code and what part was conflict resolution.

      All of these weak points of SVN can be addressed by adopting a way of working that suits the tool. However, it does lower your productivity if a significant part of your job is to review and merge changes from other people, which is probably why Linus hates SVN.

    24. Re:Subversion branching and merging by Anonymous Coward · · Score: 0

      I knew that it tracked merges/branches, I just did not know that it does something useful with it

    25. Re:Subversion branching and merging by oiron · · Score: 1

      Well... I recently tried something like this:

      Trunk:
      /Foo
      /Foo/Bar

      Branch A:
      /Foo /Bar /Baz

      Branch C: No layout changes, but several commits in /Foo/Bar

      Merging in SVN gives me tree conflicts. Merging in git pretty much just works. This was with SVN 1.6 or so, but the repository was upgraded from 1.4

      Sure, SVN's gotten better in the last few releases, but really, Git's robustness is still a distant dream...

    26. Re:Subversion branching and merging by Skuto · · Score: 1

      >From my cursory inspection of GIT, it's something that GIT seems to get right?

      Yes (both renaming and the unique IDs).

      Git renaming works by (AFAIK) finding file similarities, so it even works for refactoring. It also doesn't track the renames explicitly, but just figures it out when it needs the information. The main advantage of this is that the algorithms for detecting it can (and are) actually improved regularly.

    27. Re:Subversion branching and merging by Skuto · · Score: 1

      >This is still hard no matter what version control system you use.

      Why is why it's very handy if the version control system is fast, has excellent features for digging through the history, and splitting commits into pieces.

    28. Re:Subversion branching and merging by rocket22 · · Score: 1

      I bet FreeBSD will be moving away sooner than later.

  26. Wait, this isn't a git tool? by Zigurd · · Score: 1

    I was hoping for a visual timeline of distributed git repos, or something that would make using git easier. Git is likely a better way to do version control, but it is better because it is fundamentally different. Those differences have not worked their way into Eclipse's abstraction of version control far enough, yet.

  27. Show me an actual distributed RCS. by BitZtream · · Score: 0, Troll

    What? You really can't? You mean EVERY SINGLE ONE of what you want to call a Distributed RCS actually depends on something centralized to make it useful to anyone?

    Seriously, you guys need to get over the 'dstributed' bullshit and start realizing that anarchy and decentralization is not actually the solution to ever problem on the planet.

    There has to be some point for software to go to start looking for 'distributed' copies.

    So many people rant about which RCS to use, and 99% of you don't even know how to fully exploit even the most basic of RCS systems to their advantages.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    1. Re:Show me an actual distributed RCS. by CompMD · · Score: 1

      Mod parent up.

      Have you ever tried to administer a central hg or git code repository accessed by a couple thousand developers and maintain access controls on it, like you would in a corporate environment? I have, its a complete pain.

      The distributed nature of a tool like git is nice in that you don't have locking and its easy to get all the code you need. However, its worthless to a company unless that can be managed, and you realistically need something like Gerrit (git code review, access control system) or github:fi (costs a metric crapload to help Scott Chacon buy a fleet of Ferraris).

    2. Re:Show me an actual distributed RCS. by dsuarezv · · Score: 1

      This Plastic SCM thing claims to do that... I just downloaded and will see.

    3. Re:Show me an actual distributed RCS. by Limburgher · · Score: 1

      Try gitolite. Good stuff.

      --

      You are not the customer.

    4. Re:Show me an actual distributed RCS. by CompMD · · Score: 1

      I have. Its better than gitosis, but not good enough to really make large businesses notice.

      We use Gerrit and contribute back improvements and fixes since we get the functionality we need and the developer time in fixing Gerrit is less than the cost of buying commercial SCM software.

  28. Re:I do live on the edge. ;-) by commodore64_love · · Score: 1

    Ooops...
    ~500 megahertz K6 laptop w/ ~192[M] RAM
    -single core P4 desktop w/ 512[M] RAM

    You can tell you're old when you remember when 512K was considered a lot of memory. "I got a Commodore Amiga 500. I could do BASIC or C programming for an entire month and still not fill-up all the space! Wow." ----- Now we have computers with 1000 times that amount and they won't run Win7 or OS X out-of-the-box.

    --
    "I disapprove of what you say, but I will defend to the death your right to say it." - historian Evelyn Beatrice Hall
  29. Revision control gets far too much attention. by Brannon · · Score: 1

    What matters is the total build and regression story, which encompasses configuration management and revision control--that topic gets far too little attention.

    1. Re:Revision control gets far too much attention. by VortexCortex · · Score: 2, Interesting

      I agree. This is why I use CMake, CTest and Git.

      Test results are stored in a file inside my Git repo, and are therefore part of the "story".

      However, what really matters is the total build, regression, bug reporting, electricity consumption, end user satisfaction, employee payroll, and stock price story -- which encompasses more than just revision control and illustrates that "what matters" is a matter of opinion.

  30. Re:My god, it's full of troll. by mikestew · · Score: 4, Interesting

    Full of troll, and incorrect in some spots. For example, TFS doesn't do branching and merging? It may do a crappy job of branching and merging, but that functionality is prominently there.

    I quit using SVN just because I found the Xcode integration to be flakey at best, and remote work was less than seamless. It otherwise seems to work fine, and what it lacks are things that are just poseur points for most shops (quick, list two problems for your shop that only a DCVS can solve).

    Git worked for me when I was doing work on the bus to and from my day job, allowing granular commits instead of the big mixed-up commit when I got home. I like it for a lot of other reasons even after doing my own thing full-time. But there's no way I'd get on a religious soapbox about it, starting with the learning curve (first time a merge or a push goes wrong, break out the google).

    But hey, use what you want as long as it's not VSS. Because even a tabs vs. spaces flamewar interests me more than source control debates.

  31. Re:My god, it's full of troll. by dannys42 · · Score: 2, Informative

    I agree, subversion is not terrible. However, after getting a laptop, I definitely see the advantages of a DVCS. git's not the friendliest of tools, but regardless of the reason, there's a lot of moment out there and supporting tools, so I prefer using git as my DVCS system.

    In addition, with git, I also have gotten extremely comfortable with creating a new local branch for any separate task I want to do. This makes my commits much cleaner and virtually eliminates the problem I had with svn where I was working on a feature then got interrupted with a high priority bug.

    The git-svn bridge also comes in extremely handy, and is a great way to get the benefits of both worlds.

    I have to say though, that I think git not handling directories as real objects is a big step backwards. And Subversion's use of metadatas can also be pretty handy sometimes.

  32. They forgot CMVC... by Anonymous Coward · · Score: 0

    I'm not sure that I would blame them...

  33. Re:I do live on the edge. ;-) by rthille · · Score: 0, Redundant

    Ha, my _server_ is a 250MHz MIPS box (Cobalt RaQ2) with 256MB RAM. Pretty sure your systems have MB of ram, not KB of RAM...

    --
    Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
  34. a DVCS can be used like a centralized one by Chirs · · Score: 1

    You can always use a DVCS like a centralized one. The opposite is not true.

  35. Meh, I'm *still* happy with plain RCS. by DdJ · · Score: 1

    For personal projects, I've mostly been happy running RCS on my own server. I use CVS from time to time, and bits of it annoy me, but I can get work done with it.

    Maybe for huge open source projects with teams all over the planet who can't communicate very tightly and who don't have a unified SDLC, some of these newer tools are worthwhile. But if you've got a small team and an adequate process, what's the compelling argument for switching to one of them if what you've got in place is working fine?

  36. Re:My god, it's full of troll. by e4g4 · · Score: 1

    While I agree svn isn't bad to work with

    SVN is barely tolerable. I'm never going back - git is so much better it's not even fair to consider it in the same league as SVN.

    --
    The secret to creativity is knowing how to hide your sources. - Albert Einstein
  37. I work with git within a company by Chirs · · Score: 1

    A distributed system is handy because you don't need to be net-connected to do work, so you can take it on your laptop and work on it while on the plane, bus, etc. without worrying about a net connection.

    You can pass half-done changes to your coworkers for evaluation without checking them in to the central server.

    If doing any work with the linux kernel, git is the most efficient tool to use simply because everyone else is using it.

    And of course you can still have a central server to act as the "official" repository. It's just that you can also bypass it when desired.

    1. Re:I work with git within a company by Darinbob · · Score: 1

      You certainly can do work when disconnected from the net even if you use CVS. I have coworkers who do this! Of course they're not committing files while on the plane or comparing revisions, but they're perfectly able to do the same sort of development they do 99% of the time while at work.

      Of course, I've always wondered about the "but I can work on the bus" argument. To me if I had to take the bus, or when I'm on a plane, then that is my iron clad excuse to say "sorry, I can't work so I'll relax instead". I can't help but feel sorry when I see people in cramped airplane seats who are working. Perfect time to catch up on a book, get some sleep, or even just stare into space and stop thinking. I'm worried we're getting a generation of people who think work is a 24/7 activity, especially when I see emails like "I'm on vacation next week, I have email access and here's my number". This is another reason I never want to get a 3G phone, too many people seem to be slaves to theirs.

  38. How could he miss SCCS? by Anonymous Coward · · Score: 0

    I cut my source-control eye-teeth writing versioning scripts for sccs based systems.

  39. Horses for Courses by dubious_1 · · Score: 2, Insightful

    The author appears to believe that old version control systems are bad because they are old.
    I have used ( and administered ) projects using RCS, CVS, SVN, Perforce, Clearcase, Git and VSS.
    RCS - Advantage: no setup necessary. I used RCS to track changes to my 140 page thesis ( latex ) during the year of writing. I can still take that tar archive and extract to any workstation, PC ( windows, mac or linux) and have full access to the revision history. No setup, dirt simple. ( of course since RCS was never designed to handle more than a single person modifying the file at a time, concepts like branching, merging etc, don't exist, but for simple single person projects, this is far better than nothing ( and vastly better than manually archiving copies when you remember to)
    CVS - Advantage: Supports multiple users, branching and merging (same server, DCVS variant provides some concept of distributed but should be avoided). Relatively easy to setup, and when restricted to ssh only access can be relatively secure. Disadvantage: no distributed support, very coarse security ( if you have access to the server and repository directory you have access, multiple projects on same server are clumsy to secure).
    SVN - better than CVS, but harder to setup ( less obvious ?). Distributed support (sort of), but no concept of locking checkouts, so not suitable for code that is not easily merged ( VHDL and Verilog can get ugly when you try to merge what appear to be trivial changes ).
    (CVS and SVN are pretty well supported via integration with many IDEs out of the box).
    Clearcase - Great big bag of hurt. Avoid this if at all possible. Advantage: Large companies ( Govm't contractors ) use this tool. Ratio of administrators to users 1:10 typically, so expensive manpower. Provides distrubuted (ish) support using Multi-Site. License costs very high. Security is laughable. Any user with network access to the server ports, and an installed licensed client (access to license server) and the ability to assume root on a unix/linux machine can perform any administrative level operations of the files. The client reported username and group membership are trusted by the server to determine access privilege.
    Perforce - Despite the authors grouping, P4 provides very good distributed support for controlled development projects. Using proxy servers remote access to files is pretty fast. The only tool listed so far that supports atomic checkins. If any file in the set you are submitting fails to checkin, the whole checkin fails. This may sound like a bad thing if you have never had to fix a problem where one file didn't get checked in, breaking the build. Security (access to parts of the repository) is controlled within the tool, so a fine level of granularity can be achieved. Account management can be done directly in perforce by the admin ( passwords stored locally ), or can be setup to use ldap/kerberos/Active Directory for added trust.
    VSS - Small bag of hurt. Small bag because it worked so poorly that we never used it for large projects. Nothing good to say about this, just say no.
    Git - I haven't used this enough to know if I like it or not. Having the repository replicated at each remote leaf (user) is nice for the distributed development, but for projects requiring close control of the source code this can be nightmarish. Since every remote site has a copy of the whole history, fixing the problem when Johnny accidentally checks in code from projectX that contractually cannot be shared with projectY can suck.

    1. Re:Horses for Courses by EvanED · · Score: 1

      CVS - Advantage: Supports multiple users, branching and merging (same server, DCVS variant provides some concept of distributed but should be avoided). Relatively easy to setup, and when restricted to ssh only access can be relatively secure. Disadvantage: no distributed support, very coarse security ( if you have access to the server and repository directory you have access, multiple projects on same server are clumsy to secure).

      More disadvantages: can't rename files in a way that doesn't require coordination from everyone, must contact the repository for everything, no actual concept of changesets, and a bunch of other little things that add up to there being absolutely no reason that it should be used any more. Essentially everything that CVS does, SVN does as well or better. About the only exception to this is that you can't just peruse the actual SVN repository; whether this is a good or bad thing is left up to the reader.

      SVN - better than CVS, but harder to setup ( less obvious ?). Distributed support (sort of), but no concept of locking checkouts, so not suitable for code that is not easily merged ( VHDL and Verilog can get ugly when you try to merge what appear to be trivial changes ).

      What's wrong with 'svn lock'?

      Perforce - ... The only tool listed so far that supports atomic checkins.

      You might want to check that fact again; Subversion has atomic commits.

    2. Re:Horses for Courses by jeremyp · · Score: 1

      I think I'll take what you say with a grain of salt. I use svn most of the time at work and in my own projects and pretty much everything you say about it is wrong except that it is better than CVS. It has no distributed support out of the box but it has had locking for a good five years or more.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    3. Re:Horses for Courses by WuphonsReach · · Score: 1

      VSS - works fine for groups up to a dozen or so, but the repository is easily corrupted. However, putting it behind a SourceOffSite server made it a lot more reliable. Downside is it's pricey, proprietary, and works on a lock/modify/unlock workflow. The lock/unlock sucked hard because you had to constantly hound developers to check things back in or unlock files that they forgot about.

      SVN - It does have the concept of "reserve" marks, but only as advisories. You can easily break the locks if needed, no more waiting for Joe to get back from lunch. Definite step up from VSS/SOS installs. The only big issue I've had over the last half-decade of use is training developers away from the lock/unlock mindset and towards the "update / modify / commit" mindset. Once they finally drilled it into their heads that they always have to update before changing anything, the main issues went away.

      (We use SVN all the time with binary files that can't be merged. The only downside is the extra storage space required for the pristine copy kept in the meta directory. Other then that it works fine for images, binary files and source code.)

      --
      Wolde you bothe eate your cake, and have your cake?
    4. Re:Horses for Courses by EvanED · · Score: 1

      Compared to CVS and those that came before, you could say Subversion has some manner of distributed support out of the box -- you can see what files you've changed, and even get diffs, without contacting the main server. With CVS you can do next to nothing without a server connection, while with Subversion what (at least for me) are the most common operations are fully local.

      But yeah, there are a bunch of mistakes in that post as I pointed out above.

  40. Re:My god, it's full of troll. by wiredlogic · · Score: 1

    Actually Bazaar and Mercurial do work with the much simpler feel of RCS in that there is no real effort needed to set things up. It can be refreshing to not have to mess around with repository configuration for simple projects.

    --
    I am becoming gerund, destroyer of verbs.
  41. Re:My god, it's full of troll. by walshy007 · · Score: 1

    Completely agree that git is leagues ahead, but svn is usable in the sense I could use ed as my ide if I wished, while nowhere near as useful it is still functional, for a certain need.

  42. I use both svn and git by vrillusions · · Score: 1

    We purely use subversion at work (after years of trying to convince them, prior to this all work was done on live server, by multiple devs at once). I've switched to git for most personal projects. Of all the benefits and downsides of git vs svn, I just feel more comfortable in a distributed VCS workflow. My home directory is still subversion though. Seems to address the problem better for wanting to keep my different home directories in sync. Don't want to login to a server and go "oh crap, I forgot to push my changes from other computer".

    I've tried converting work to git but it just isn't going to happen. I just snicker when something happens in subversion that I know git can do easier.

    (rant)To revert changes in subversion you do a non-intuitive reverse merge? With git it's... git revert. Anytime someone needs to revert a commit in subversion they ask me and I always have to look up the syntax because it doesn't make sense(/rant)

  43. There's nothing arcane about CVS by Anonymous Coward · · Score: 0

    There's nothing mysterious or obscure about CVS. But it might be described as "archaic"

  44. free for up to fifteen users ...ha! by spikenerd · · Score: 1

    Ooh, PlasticSCM is free (as in beer, but not as in liberty) for up to fifteen users for a lifetime! Git is free. (period). Why do we even put these on the same chart?

    1. Re:free for up to fifteen users ...ha! by rocket22 · · Score: 1

      Yeah, I guess there're still companies trying to make a living out of selling software... Damn!

    2. Re:free for up to fifteen users ...ha! by Entrope · · Score: 1

      Someone up-thread nailed it: The blog post is really a not-very-stealth advertisement for that commercial SCM tool.

  45. Subversion misrepresented... by TemporalBeing · · Score: 1

    Their description of Subversion is almost blatantly wrong, and misses much of the improvements SVN brought about. It would have helped them to at least have read some of the Subversion Documentation - or even just the chapter on Subversion's Delta Editor in the book Beautiful Code.

    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  46. Re:My god, it's full of troll. by BenoitRen · · Score: 1

    Linux was released in 1991, LOL 1991 CELLPHONE!!!1! ... Oh wait, the initial release date is irrelevant as software changes with time.

    Tell that to all the idiots who blame Windows XP users for using an OS from 2001.

  47. Re:My god, it's full of troll. by heathen_01 · · Score: 2, Funny

    Spaces not tabs. How can you even pose that question?

  48. version control sw is irrelevant by Anonymous Coward · · Score: 0

    What, on the other hand, IS relevant is whether you produce the content with a proper text editor or emacs.

  49. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    If dcvs seems complex to you, and you don't want to learn how it works, please write up your resignation and quit your job today. Seriously. You'll find far less challenge (and probably better pay) as a bricklayer, and the software industry already has enough people too dumb to learn about their tools. Fuck, your statement is like a builder saying "at my last house building jobs one of the guys tried to convert me from using a hammer to using a nail gun, telling me how much effort it could save me and then proceeded to show me how to put nails in it and that it needed plugging in. Seems like complete overkill to me"

  50. They're selling a VCS by Lemming+Mark · · Score: 2, Informative

    It's a nice timeline of some key milestones but it's worth noting that they're advertising something, it'd be nice if that had been clearer from the article.

    Also, I was disappointed not to see GNU arch / tla get a mention as I think they might have been first to decentralised operation. They were most certainly one of the first and as such I suspect they had a certain amount of influence on those that followed, even though the user experience was reputed to be lacking from what I heard (actually, I thought that bzr evolved out of it too, so it may also have a more direct connection with the modern-day main players)

  51. FRAUD ALERT! by Anonymous Coward · · Score: 1, Informative

    Fraud Alert: This Slashdot story was written to make a new commercial version control system, Plastic, seem as though it is the best, in my opinion.

    Was a Slashdot editor paid to run this story? Is it Slashdot company policy to allow sneaky advertising???

    You can judge a company's products by its morals: Oracle, Microsoft (huge hassles with products being unfinished), AOL (misleading accounting), and Enron (misleading accounting) are examples that come to mind.

  52. I Love Mercurial! by mcrbids · · Score: 1

    I've started using Mercurial, and I LOVE it! It's lightweight nature means I can make ANY directory a repo, and keep track of changes within that directory, using nothing more than that directory. This makes it feasibly easy to use source control in places I never would have with SVN - such as admin scripts buried in /usr/local, or all the system settings in /etc...

    It has solved problems I never thought truly possible to solve instantly, easily, and accurately.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
    1. Re:I Love Mercurial! by WuphonsReach · · Score: 1

      This makes it feasibly easy to use source control in places I never would have with SVN - such as admin scripts buried in /usr/local, or all the system settings in /etc...

      For a SVN shop, you would use FSVS in that situation.

      (I've been versioning our Linux boxes for quite a few years now with FSVS. It's wonderful for wondering "what the heck did I change last June"? Plus, since the backend is a SVN repository that can be anywhere, I can point my client-side SVN tools at the repository and use GUI tools like TortoiseSVN to browse the change log. I wish there was an equivalent, free, tool for my Windows servers.)

      I'll have to keep Mercurial in mind though.

      --
      Wolde you bothe eate your cake, and have your cake?
  53. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    Clearly the words of a kid with no clue.

    Software companies, pulling in real money, not startups doomed to fail like the dotcom before them, don't need to introduce new tools into their workflow just for shits and giggles.

    When you introduce third-party services, you are introducing the possibility of failure into your system.

    If a tool solves no problem (in business, that means "show me the money") but introduces cost (in business, that means "training, ops, maintenance, existing bureaucracy, the list goes on ...") then it's asinine.

    Not every project modelled after the Linux kernel.

  54. shiny new by Anonymous Coward · · Score: 0

    I sure envy you kids using your shiny new BeOS systems.

    Here I am stuck using the ole Unix and Unix-like systems that I've been using since 1982.

  55. Brand new VCS for large binaries by mekberg · · Score: 1

    I'd like to take this opportunity to push my very own brand new project for a VCS for large binary files. Most VCS:s so far has been developed for code. Nothing wrong with that, but there are many other kinds of data that also deserves a safe, version controlled repository they can call home. My tool is named "boar", it's written in python and I need users and help to make it perfect.

    To quote the project page: "Boar aims to be the perfect way to make sure your most important digital information, like pictures, movies and documents, are stored safely. If you are familiar with vcs software such as Subversion, you might think of boar as "version control for large binary files". But keep reading, because there is more to it..."

    Check it out! (pun intended)

    http://code.google.com/p/boar/

  56. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    It doesn't do a crappy job of branching and merging. It's the best tool I've ever used for branching and merging. I don't know what the hell they're talking about.

  57. Re:My god, it's full of troll. by WuphonsReach · · Score: 1, Insightful

    The better way to look at a lot of the SCM systems boils down to:

    - How technical are your users?
    - Do you want something centralized or decentralized or a mix?
    - What tools do you have and do they play nicely with the SCM?
    - Does the SCM play nicely in your environment?
    - Is the product worth the licensing cost (vs a free solution)?

    For instance, SVN is definitely better then CVS, but it's centralized. Which has some advantages and disadvantages. It has very nice tools (TortoiseSVN, FSVS) and is easy for end-users to wrap their heads around it. Merging works, is undergoing constant improvement, but may not be suitable to all styles of development.

    For our particular shop, SVN simply works. Couple that with being able to use FSVS to version-control our servers (mostly for tracking changes to the file system), and I'm happy enough that it's not worth moving. (Considering our prior SCM was SourceSafe on top of VSS, nearly any SCM was a better choice. SVN was the natural upgrade path back in the 2004-2006 timeframe. They were there, the tools were ready, and it played nicely with our environment.)

    If we needed decentralized repositories, then we'd go look at git, Mercurial or one of the others.

    At the end of the day, it's more important that you use at least some sort of SCM, rather then which SCM you use.

    --
    Wolde you bothe eate your cake, and have your cake?
  58. Plastic by Anonymous Coward · · Score: 0

    Plastic SCM [...] Plastic’s developers (BTW, I’m one of them) [...] A Community Edition of Plastic SCM was launched in November 2010.

    There you go, that's what this article is ultimately about - getting the word out on that. ;) It's a slashvertisement, but it's a good/interesting one, so personally, I'm not complaining.

  59. Re:I do live on the edge. ;-) by Anonymous Coward · · Score: 0

    yeah, that's the way to spin it gramps, awkwardly try to cover up your bout of CRS while ranting about how these damn kids don't appreciate the luxury they wallow in, and how did they get on your lawn... For an encore, you can complain about the ebbil gubbemint wanting to force you to pay for other people's hospital expenses, and they better keep their mitts off your medicare...

  60. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    When you introduce third-party services, you are introducing the possibility of failure into your system.

    SVN/CVS _is_ a third party service you moronic dipshit. anything not running on my development machine is a third party service. it doesnt matter if the guy on the next desk over is maintaining the svn server, if it goes down it disrupts my work. if the internet goes down it disrupts my work. if I'm away from the office and without 3g reception it disrupts my work. none of this is an issue with DVCS.

    you're just another old man who hasnt kept up with technology and should have retired a long time ago. "computers?!! clearly the tools of a kid with no clue. flat files are good enough, computers are just fancy tools people use for shits and giggles"

  61. Re:My god, it's full of troll. by bfields · · Score: 1

    Personally, I thought it was complete overkill for the two-man project we were working on.

    With git, setting up a new project is

    cd myproj
    git init .
    git add .
    git commit -m "initial commit"

    and you're off--no setting up a server. And if you want to share it with one or two people, ssh will do.

    I suspect bzr is similar.

    So at least for me the low-overhead setup makes them more attractive for small projects too.

    I'll admit they require some initial investment to learn, but it's very much worth it.

  62. At least you have one by dg41 · · Score: 1

    Our legacy system was a "hey only one person can write files to this directory but you can copy the files to this directory for developmenstuction" setup. When I mentioned source control I was looked at like I was the new kid telling them what to do because they had no problems with their current system (in their minds). Rough stuff.

  63. Re:My god, it's full of troll. by Darinbob · · Score: 1

    I've always heard of git as a distributed version control system, and as such I've been ignoring it. Ie, all my coworkers are in the office usually, not distantly separated and loosely connected kernel devs. Examples I've seen of where people love git tend to be nearly exclusively open source projects composed of distributed developers.

    So where does having a local repository (and the huge space this entails) actually help the person who's sitting in a cube with a fast lan to the server? Almost never have I wanted to have an entire repository local, having 3 or 4 branches is great, and then only a subset of the full directory tree, and very rarely I'll do a diff against an archaic branch (and I can afford the 1 second wait that takes).

    So what does it do for a corporate user that SVN does not do? For background, I'm still with CVS at work, and we're debating about migrating to either SVN or Perforce (I like perforce, and it's what the rest of the company uses, but one person has vetoed it for some reason). I know why Linus hates it, and his reasons are correct for his uses but it's not necessarily true for all.

    I love change sets; I often have multiple ongoing tasks in the same source directory, or the same task that I want to split into multiple commits. CVS has zero support for this. Perforce has full support. SVN lets me group into change-lists, but none of this is remembered at the back end from what I can see. Git has this at the back end so you can do things like cherry pick, but you can't group your working files into different sets and then say "commit this set only". So for me neither is better than Perforce for work flow. But that's just me; I'm certain other people see the distributed stuff as the must-have feature.

  64. Re:My god, it's full of troll. by mattack2 · · Score: 1

    For instance, SVN is definitely better then CVS

    FOR YOU.

    I think CVS is better, since I don't have to deal with the big-freaking URLs all of the time. I wish they truly had made a (much-closer-to) superset of CVS. Doing integration with CVS is much easier than with subversion, since I can bump the version and do the tag right BEFORE I submit it, not at the beginning of the integration process.. so I have to do everything basically 'backwards' in subversion.

  65. Mac version control by bar-agent · · Score: 1

    Before OS X, Macs had a bit of trouble with version control. No command-line, see. In fact, I only knew of two that were reasonably-priced or free: MacCVS and Voodoo. I never got a chance to use Voodoo, but its approach and feature-set looked cool. Can anyone comment on how well it worked? Or what version-control system you used on classic Macs?

    --
    i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    1. Re:Mac version control by self+assembled+struc · · Score: 1

      p4 had a gui and a command-line interface from the macintosh programmers workshop (MPW).

      free for single users.

  66. ENVY Developer by cowdung · · Score: 1

    Actually ENVY Developer was waaay more sophisticated than any of the tools presented here. Back in the early 90s you could have distributed development, anybody could make their own branches of the code, and you could pick and choose what version of each class you wanted to build with. Also it eschewed flat files and instead used a more powerful transactional database store.

    The article clearly has a bias to text-only solutions.

  67. thinker by Compaqt · · Score: 1

    Thinker: v. to tinker while cogitating.

    I like it! And I'll use it. (If refudiate is good enough for OED, thinker's great, too.)

    --
    I'm not a lawyer, but I play one on the Internet. Blog
  68. Re:My god, it's full of troll. by julesh · · Score: 3, Insightful

    And another point: "the age of distributed version control"?

    I work in an office. I have a gigabit network between my workstation and the version control server, which runs on a RAID array significantly faster than the disks under my desk. The connection is always on, always works, and is so fast I don't notice it. In what way could I possibly benefit from a distributed system? And why would I use a distributed system when every one I've ever tried requires a two-step approach to sending my changes to the other developers (synchronize my working copy with the local version control, push changes from local to the rest of the team) rather than just one (commit changes)?

  69. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    SVN/CVS is a a third party service that works, integrated into the workflow long ago. DCVS is a completely different workflow with a steep learning curve and the tangible benefits are questionable for some organizations.

    Some people, you know, instead of obsessing with their tools, write code.

    But don't let anyone interrupt your work, your fiefdom is appreciated.

  70. Re:My god, it's full of troll. by Anonymous Coward · · Score: 0

    Terrible analogy. People write code with text editors and IDEs, not SCMs.

    It's more like the difference between QWERTY and DVORAK keyboards. One is clearly better, but people familiar with QWERTY do just fine.

  71. Re:My god, it's full of troll. by Rozzin · · Score: 1

    I love change sets; I often have multiple ongoing tasks in the same source directory, or the same task that I want to split into multiple commits. CVS has zero support for this. Perforce has full support. SVN lets me group into change-lists, but none of this is remembered at the back end from what I can see. Git has this at the back end so you can do things like cherry pick, but you can't group your working files into different sets and then say "commit this set only".

    Actually, yes you can. Selecting which files to commit is actually even part of the normal workflow.

    --
    -rozzin.
  72. Whether DVCS is `worth the extra(?) storage-cost'? by Rozzin · · Score: 1

    I've always heard of git as a distributed version control system, and as such I've been ignoring it. Ie, all my coworkers are in the office usually, not distantly separated and loosely connected kernel devs. Examples I've seen of where people love git tend to be nearly exclusively open source projects composed of distributed developers.

    So where does having a local repository (and the huge space this entails) actually help the person who's sitting in a cube with a fast lan to the server?

    If you actually compare the stats for space used by different systems, you'll find that, between all of the different DVCS tools (Git, Bazaar, Mercurial, etc.) and Subversion,
    Subversion checkouts actually tend to use the most space: yes, a Subversion checkout without a local repository--which means that it only gives you immediate access to one version, and doesn't allow you to do annotations or anything else without round-tripping through the server--actually tends to use more space than a local DVCS repository that stores all of the history and allows you to batch and group commits, do fast annotates, deal with merge-conflicts more easily, be immune to server/network reliability issues, etc.

    Try a comparison--do a svn checkout of some project, then import the project into the DVCS of your choice and compare the space used by each. I usually use Bazaar with bzr-svn for this, with "bzr branch " to import just the trunk, or with "bzr svn-import " to import all of the branches. Bazaar is the DVCS that everyone wails on for `using more space than Git', so I was initially hesitant to use it; but then I realised that it still uses only half as much space as a checkout from Subversion.

    --
    -rozzin.
  73. Re:My god, it's full of troll. by Skuto · · Score: 1

    >I work in an office. I have a gigabit network between my workstation and the version control server, which runs on a RAID array significantly faster than
    >the disks under my desk. The connection is always on, always works, and is so fast I don't notice it. In what way could I possibly benefit from a
    >distributed system?

    If this is your work environment, quite little. In practise, one of these things tends to happen: need to work *not* in the same office, team size increases (server load increases), server goes down. In all of them, the fast server isn't so fast anymore.

    >And why would I use a distributed system when every one I've ever tried requires a two-step approach to sending my changes to the other developers
    >(synchronize my working copy with the local version control, push changes from local to the rest of the team) rather than just one (commit changes)?

    The push can be automated if you want. But usually you don't necessarily want that (and having the possibility is an advantage).

  74. Re:My god, it's full of troll. by Darinbob · · Score: 1

    True, but selecting the files is a manual process. You can't just say something like "git commit bugfix-23" as far as I know.

  75. Unpublished changes by r6144 · · Score: 1

    Sometimes you want to do some experimental work that is complicated enough to be version-controlled, but not stable enough for other developers to see yet.

    In SVN you have to use a branch, and SVN branches are not that convenient to use. Otherwise, when another developer checks out the tree or commits his own changes, he will see the unstable changes you have committed.

    In Git you can simply commit your experimental changes and push them (or let others pull them) when they are ready.

    And if you frequently want to push immediately after commit, just make such a shortcut.

  76. VSS not always bad by Anonymous Coward · · Score: 0

    Okay, no flames in my direction. I remember Source Safe by One Tree Software before the MicroNuts borked it beyond belief. Once Microsoft got their claws into it, there was little left of what I remember. The original developers of SS were focused on usability and quickly added features when we ran into issues. I miss my old SS.

  77. Re:My god, it's full of troll. by rocket22 · · Score: 1
    You're right here. If your environment is a high-speed network and you're always on... then who cares about DVCS?

    Plastic does a good job here because it can work in centralized mode and still with much better branching and merging than the non-DVCS.