views:

329

answers:

5

It seems like a lot of people here and on many programmer wikis/blogs/ect. elsewhere really dislike VSS. A lot of people also have a serious dislike for cvs. In many places I have heard a lot of differing opinions on whether or not using VSS or cvs is better or worse then using no source control, please rate the worst and explain why!!!!! you rated them this way. Feel free to throw in your own horrible system in the rankings. If you feel it depends on the circumstances try to explain the some of the different scenarios which lead to different rankings.

(note:I see a lot of discussion of what is better but little of what is worse.)

second note: while both answers are nice I'm looking less for good replacements and more for a comparison of which is worse and more importantly why!

+3  A: 

In my experience -

Git > SVN > CVS > PVCS > none > VSS

Reasoning -

1.) Git - nice distributed model; initially some lack of support on Windows, but now works with any OS; lots of tool/IDE support.

2.) SVN - pretty standard; there can be a small amount of pain setting up server initially, but nothing major; works with pretty much everything.

3.) CVS - old; kind of a pain to work with; but still works with pretty much everything (OS, IDE, tools).

4.) PVCS - proprietary; not integrated into many tools/IDEs; overcomplicated workflow compared to other modern version control system.

4.) none - definitely not preferred, but at least you aren't fooling yourself. This is still pretty inexcusable in this day and age with so many options and Source Control being such a well known best practice.

5.) VSS - definitely not preferred; mostly replaced by TFS; unstable; can silently fail; worse than nothing because you're fooling yourself that it will actually keep your source safe.

Nate
*Git (...) lots of tool/IDE support* Oh really? What *working* solution would you recommend for Eclipse?
Pascal Thivent
I know EGit (http://www.eclipse.org/egit/) is in incubator status, but AFAIK it works. (Admittedly, I haven't used EGit a lot... I mostly use Eclipse at work, and we only use SVN there. I mostly use IntelliJ IDEA for "outside of work" and use it's Git plugin. ) Have you had problems with EGit?
Nate
@Nate Well, it's simply not finished (not synchronize view, no visual diff, no merge) so it doesn't replace the command line yet. The situation is similar on the NetBeans side (just have a look at the open issues of http://nbgit.org/). So I don't think we can say that Git has lots of IDE support, tools still have to mature.
Pascal Thivent
A: 

No source control is definitely worst. You need to keep a history and backup of your code, even if you program by yourself.

Then I would say VSS. I've used it (years ago) and it works, but is basically nothing like a modern source control system. It's better than nothing, but since there are so many free options that work great, I wouldn't really recommend VSS unless you're unfortunate to be in a "MS-Only" shop and have the mindset of "We'll use it 'cause it came with MSDN" which unfortunately I've see too often.

A tiny step above VSS is SourceGear Vault. http://www.sourcegear.com/vault/ It's a 3rd party source control that is basically rewritten from scratch VSS but works better with remote users. I wouldn't really recommend this either, but if it's all you can get approved, is an option.

CVS is better than these. It's free, open source, provides good history and branching/merging support, and enables concurrent development without locking.

SVN is better still and the choice of many. It's free, open source, but also has commercial backing from a number of sources (i.e., you can buy support if you need it). There are many great tools available and it provides very good concurrent development without locking.

The next step is newer distributed version control systems like Git or Mercurial. As far as I understand it, in these systems each user usually gets a complete copy of the repo and has their own local set of branches and history. They can work 100% locally including commits and branches and rollbacks and everything, and when ready, push a set of changes upstream. This can continue in many different configurations fulfilling a variety of needs.

Sam
Vault is quite a bit more than just a "rewritten VSS". It uses an actual database for storage, for one tihng, and has several other features VSS does not have.
John Saunders
IMO, Vault has superior integration into VS than CVS or SVN which is a major plus in a MS shop.
Thomas
VisualSVN provides great integration between SVN and VS.
Sam
+4  A: 

No source control at all is the worst option, no need to discuss this and this is actually not an option.

I've used VSS once (10 years ago) and apart from the fact that it had very poor third party tools support, I'll just mention that the repository got corrupted several times (sigh). This surely explain why I don't trust VSS at all and would prefer any open source tools alternative (can't be worse).

If I can avoid CVS, I do it. It kinda works, is widely supported but really lacks important features (the most important one being atomic commits). But it works (it's better than nothing or VSS).

I've used Borland Starteam on a big project. Non technical people may appreciate it's client UI but it was lacking too much important things for developers: no nice IDE integration (even in JBuilder, what an irony), no post-commit hooks, no efficient Java API (to use with Maven for example), damn slow on WAN, etc plus some other very annoying glitches (like the UI not showing directories not in view). Not horrible, but there are better solutions.

ClearCase has been a bad experience, perfect for anti-agile development (was driving me mad). And so was PVCS (a nightmare). I don't even know what to say / where to start: expensive, heavy, poor tooling, etc. People buying these tools can't be the one using them, it's not possible.

Subversion was meant to be the successor of CVS, a better CVS (by providing the missing features), is widely used, is supported by many tools and is still very recommendable. Better than any of the previous solutions.

Then we have DVCS like Mercurial, Git which are more powerful, but require more skills to be used and are still lacking of tools support/integration (using the command line is not an option for everybody). Still, they are recommendable, depending on the context (not everybody needs more power) and Mercurial would have my preference because I find it more friendly.

This is nicely summarized on this picture from Martin Fowler's VersionControlTools page:

alt text

He must have read my mind when he wrote this page :)

Pascal Thivent
+1  A: 

VSS is good to use for source control.

thoughts
+1  A: 

The thing about VSS is:

  1. it is a virtual certainty that if you use VSS for any length of time it will eventually corrupt it's repository and require restoring from backup.
  2. that's not even the biggest disadvantage to using it

A batch script that makes a zip of a source folder archive with today's date as the filename is about 10% more powerful and 5x more reliable than VSS.

soru