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!
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:
He must have read my mind when he wrote this page :)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With