Source Control: Anything But SourceSafe

additional thoughts:

1-5 person development environment, client and server are both going to be windows, IDE will be M$ VS.
Features needed:
IDE integration with M$ VS .Net (2003)
version diff
rollback

Features irrelevant:
pin (that’s A VSS term) - nothing will ever be permanently frozen forever and ever, some day someone will un-pin it

branch - branching leads to version chaos… we have learned to work with each other regarding changes and make more mature code instead of just making more more more code

concurrency - most (all?) concurrent systems increase productivity (keeping coders busy) at the cost of productivity (coders have to spend time on a lot of manual merger or at least manual double checking an auto merger)… in this environment it just isn’t worth it. we can keep coders busy without them being concurrent on the same file.

BTW - Please don’t tout or suggest clear case. I formerly worked for IBM. Like Microsoft, we ate our own dog food… and now that I am free of it I won’t touch that piece of dog pile with a 100’ pole.

I’d recommend taking a look at the stream-based products if you are managing multiple releases and are having difficulty with branching and merging. Of course one of the tools is 1/10th the cost of the other, but see Accurev and ClearCase.

Here’s a good comparison between branches and streams:
http://www.daveonscm.com/

Good luck with those using VSS.

Mark

BryanV –

My recommendation: pay for Subversion support. There are a number of vendors who will happily charge your employer to support Subversion. Some of them will even host and maintain your repositories as well.

Cheers!

I have personally used several version control tools. Actually, I do not think SourceSafe is a bad version control tool. Like many the other comments in this thread, i also think SourceSafe is effective tool for small teams.

The biggest drawbacks of SourceSafe are poor remote access performance and possible data corruption (especially for remote access). Without these drawbacks, there willnot be somany compalins about SourceSafe. :slight_smile:

There are two tools that have all the benefits of SourceSafe and fix all the sourcesafe issues:

  1. Dynamsoft SourceAnywhere Standard.
    http://www.dynamsoft.com/Products/SAWstandalone_Overview.aspx

  2. Sourcegear Vault
    http://www.sourcegear.com/vault/index.html

I see that there are less discussions about SourceAnywhere Standalone than Vault, may because of SourceAnywhere is a newer product.

Ever think that maybe the problem isn’t with sourcesafe, but you? We use source safe to manage hundreds of products and don’t have any of the issues with it that you’re seeing. But, then again, we didn’t start with any of the open source stuff, so we’re not trying to get source safe to do things it wasn’t designed to do. And, in our opinion, the stuff you want it to do don’t make much sense. I think the problem is you’re too mired in your old way of doing things and rather than just learning something new, you bitch. Get over yourselves, please. There’s a reason source safe is the #1 version control: it works.

We (~15 developers) use Sourcesafe since more than 10 years for hundreds of projects in one database and never experienced any problems with it. Sometimes we run ssarc and remove old trash and we use an infinite number of labels and checkin/outs.

We evaluated both Vault and SourceAnywhere. There are stability issues in Vault. We even lost our whole repository once (not visible from the client side). SourceAnywhere seems stable and several times faster.

Hi!

I want to switch from CVS to Source safe. Is there a migration tool I can migrate my repository from CVS to Source safe with?

We switched from VSS to SourceGear Vault and we love it! Incidenatlly, we use Beyond Compare for diffs, a great combination!

Even a one person development effort should keep a source code archive of some sort even if it is just versioned zip files. A source control tool should be unobtrusive and give you an intuitive and time saving interface for managing the source archive when that is necessary.

I’ve had some experience with Clearcase, CVS, and PVCS. Managing my source code shouldn’t take as much of my time as those packages required.

I’ve used VSS at several jobs over the last 10 years. It’s not perfect but it works and it’s relatively inexpensive.

I think we had some trouble with VSS corruptions at a job way back in 1999/2000 but I’ve not seen any serious problems since then. Using it over a VPN was crazy slow but VssConnect solved that for the short time we needed it.

We are using VSS now and after seeing the comment about the 2GB database size, I just verified that ours is up over 2.5GB in size. So I am a little worried but not overly so. Our data is automatically backed up daily and once in a while I back everything up again before the occasional major operations like branches. Yes, branching/sharing are problematic in VSS and I wish MS had done that better but it is what it is. If VSS gets corrupted, then we’ll have to retrieve an uncorrupted version from the backups. If you don’t back up your data then you are just asking for trouble.

The integration of VSS with Visual Studio is nice. I rarely notice a delay when I start typing and the file is automatically checked out. I’m not too interested in any source control tools that require me to open another interface to check in/out or merge back in - whatever your tool requires you to do. I even begrudge the time I have to open the VSS UI to create labels and do other minor tasks.

We are considering moving to Team System but we’re going to have to try it out first and then we are going to have to convince our management to pay for it… I don’t think I could ever trust an automated merge. As someone said, one reason people stick with what they have is that change can be costly/problematic.

VSS and the rest of the source control systems are just tools. Use the tool that is appropriate for the job - whatever gets the job done and makes it easier for you and your team. If I start developing in a different IDE that doesn’t integrate with VSS then I might consider a different source control tool. I know that if I was archiving lots of binary files (multimedia development) then VSS would not work very well. If something besides VSS makes your job easier, then promote it for your scenario but don’t get emotional about it and call it names just because it failed you at some point. Maybe you failed to use VSS properly just as I may have failed to use Clearcase properly. Or perhaps I was trying to use a sledgehammer to set finishing nails.

Some people like cake and some people like pie and some people like both. I want them both AND some ice cream but I’ve got to be careful because they all tend to be fattening and cost money. I think I’ll go check out that “free 2-person” version of Perforce.

Has anyone tried QVCS?

Thanks for such a good article.

S ,what would be the recommended free source management tool?

I know that many people have issues or complaints on the history of BitKeeper from BitMover, but having used it, CVS, PVCS, VSS and Vault, I would have to say that it has been the best product I’ve used.

There are a lot of arguements from the open source developers that the cost is high. I would agree, it is expensive, especially when you’re in the business of developing free software. If you’re in the business of profiting from your development efforts, the cost is still a factor, but one might argue that the benefits out weigh the cost. I like it so much that I use it for my small side business to manage my codebase and I’m the primary developer.

I like not having to have a centralized server, the ability to put hooks/triggers into the checkin/checkout process, the ability to clone multiple times to quickly create working projects while it manages the complexity of merging changesets back. You can be on an airplane and clone from your local repository to quickly make a new beta build or try something new. If you don’t like it, just delete the clone and do it again if you’d like.

The key to BitKeeper like any other system is to understand that by itself, it’s not the complete solution. You must understand how your business deploys / distributes code/hotfixes/QA builds, etc… Knowing that, BitKeeper makes it EXTREMELY easy to glue it all together and provide for a very reliable Change Management tool that helps prevent you from forgetting to check in a piece of code or add a new one to the repository (VSS). BitKeeper will alert you of those and ask if you want them to participate in the current changeset. If not, no worries, your work in progress won’t impact the up-stream repositories.

It’s a beautiful product. The people at BitMover are very nice to work with and even though most say that the licensing is expensive, but if you have a large development team the cost of licensing bitkeeper is nothing compared to the salaries you’re probably paying.

George

I’m a software configuration manager who has administered SCCS, RCS, CMVision, MKS Source Integrity, MS Visual SourceSafe, Continuus, and ClearCase. What I found is that software developers usually don’t think SCM is important until they’ve been bit by the alligator. Without decent configuration management, developers make foolish mistakes in managing their code that would make the angels weep.

Working in all types of situations, little companies and big corporations, government and commercial, my observation is that almost all code shops are mom pop operations with few controls. They rely on heroics to get code out the door, not process. The worst example of this I’ve seen is Sabre, the reservation company for American Airlines. They had no idea where the code for their systems was. They were interviewing me to go find it. Consequently, they could not update their system because all they had were the executables. That’s what happens when all you think about is making your deadline.

Part of the reason that developers screw up CM is that they are improperly trained at their universities. They are given an assignment which they do solo and turn it, never to rework it nor version it. They are not trained to preserve their work nor exercised in the software development process. It’s like learning to fly but never learning to use the air traffic control system.

Another problem is that software developers tend to think of themselves as artists rather than engineers. Artists just do what they want to do and heroically save the day. Engineers build up processes which they relentlessly repeat to increase the quality of their work. Much of the bellyaching here seems more like the typical objection to having CM at all. Developers generally have a shorter term focus than their organization. They only care about delivering the release they’re currently working on. Their organization has the larger concern of preserving that release and being able to reproduce it or retreat to it. That puts developer and organization in contention.

It’s amazing to me how many shops I’ve worked where the developers bitch about doing CM but quietly spend days trying to reassemble releases they’ve lost or misplaced. They never have time to do it right but always have time to do it over. It’s like they don’t get it. If you don’t use a CM tool, it’s like not using a refrigerator for your food, laying it out on your patio instead. It’s not likely to be there in a couple weeks.

That said, VSS is OK for garage shop operations. If you only have one or two developers working on a simple application, it’s simple and free. I don’t much care for it because it appears MS just kind of winged the application, not referring to any of the rather considerable body of knowledge on SCM. If SCCS and RCS are the flint axes of SCM, then MS VSS is the bronze sword.

Personally, MKS Source Integrity is the nicest of the low end tools, most of which are pretty much the same. You don’t want to do branching in any of them. SI was easy to manipulate and it had a wonderful admin console. It took a long time to pull in the code to build a release.

ClearCase is a pretty good CM tool. You will never lose your code. Once it goes in the database, it’s like a fly trapped in amber. If you back up the database, you’re bulletproof. I’ve had my entire ClearCase application and archive wiped clean off the server and had it all back up and running in a couple days, as soon as the tape came back from the archive.

When properly installed on the correct equipment and competently administered, ClearCase runs like a champ. It’s the implementation where most ClearCase problems arise.

First, there is a bottleneck in training CC admins because they have to train on the job with developers as their lab rats. There is usually only one CC admin in a code shop. Usually there is nobody with any useful expertise who can help him in the nitty gritty of CC administration.

Second, ClearCase is not an intuitive program, particularly when using UCM. It also lacks guard rails for the users, who can hang up their client with enough determination. The problem is that ClearCase was not designed but rather evolved. Nobody modeled what developers did and worked back to the code. They built it up from the RCS utility, adding features to use the RCS better but never thinking through the whole process. Therefore, it’s confusing for the users.

ClearCase is the Stealth bomber of SCM. If you don’t train the users how to fly it properly, they’ll run it into the weeds on takeoff. Training is essential. The developers get frustrated when the tool doesn’t respond as expected or it seems complicated to figure out.

Third, ClearCase needs a good server and network. If you don’t have those, you will be plagued with problems. There are discount companies and government organizations who will spend a million bucks on the Rational tools but scrimp on the platforms which deliver it, shooting themselves in the foot.

Fourth, the biggest enemy of ClearCase is the system administrator. There’s nothing a user can do to ClearCase that can’t be undone, usually in less than five minutes. The ClearCase admin can screw things up moderately, but can fix them with enough work. However, a careless sys admin can screw ClearCase up so that it’s spitting up blood. Most of the time it boils down to permission problems within the database and views.

I’ve used VSS, ClearCase, a half-dozen or so free or lowcost systems, MS’s old SLM, and MS’s internal SourceDepot (SD.) I believe SD is a licensed fork of Perforce, bought and internalized by and for MS.

VSS sucks because it has too many limitations, a goofey kludgey command line interface with commands that end up looking like code out of the obfuscated Perl contests of old, and tends to get flakey on the client side or blow up on the server side. A SCC tool that can’t guarantee the integrity of it’s repository and file history is worse than no tool at all. VSS also omits, changes the meaning of, or simply does not even address so many common SCC operations that it’s laughable. VSS is a toy that, were it not basically free and did not come bundled and already integrated with VS it would not exist. My guess is MS does not want to invest in it because it’s basically a freebie, it’s like fuzzy mirror dice thrown in with VS.

ClearCase is an absolute abomination. I worked at Rational for years, and we were forced to use it the whole time. Bleck! I could write encyclopedias on its problems. Suffice to say that I, like some others who have posted here, would only work at a ClearCase house as a last resort and only if it were the last and only job I could find! It is true that in some types of scenarios ClearCase works well for builders and the SCC sys admins, but that’s about the only not-horribly-negative thing I can say about it.

I did a stint as a Vista builder at a certain SW company between jobs and used their fork of Perforce. Simply the best tool I’ve ever used. Everything it does is available trivially at the command line, it does only what you ask, you can create, modify, and delete enlistments at will from the command line (or Explorer, etc) simply by creating/modifying two little trivial text files on your local hard drive, powerful sync/merge/branch/etc facilities.

And… and… all of that with very little overhead. You want to work on files offline or hijacked or whatever? Fine. Just change the files in question to RW. The server does not maintain file state information about your client or whatever anyways, just change to RW and work away.

You want to put your offline/hijacked changes under control again?? No sweat - just tell the tool you want to go online. It scans your enlistment, detects controlled files that have changed, and automagically checks them out to you. On and on it goes

Someone was asking about checkout-edit-checkin for binary files.

I would suggest that you’re not really talking about source code control, but document management (now renamed ECM).

Take a look at Interwoven WorkSite, or OpenText LiveLink ECM, or EMC Documentum. You’ll probably find that these are all way too expensive, but there really doesn’t seem to be a smaller-scale or open source alternative.

I use CVS (or CVSNT, to be precise). It has a lot of cool features and the coming of age of WinCVS makes a big difference to its usability.

I would switch to Subversion, because of its philosophy of commiting changes across an entire repository rather than on a per-file basis, but I have too much invested in the way I do things now.

Paul Sanders
www.alpinesoft.co.uk

VSS and the rest of the source control systems are just tools.
VSS is SCM that can’t even manage itself. It’s a VCS that makes it HARD to manage source code changes. So, what’s the point of using VSS?

IMO, Anyone, anyone still using SourceSafe needs to get a clue. This is 2008, not 1998, guys. You’re PAYING for a product that’s much, much, MUCH, MUCH inferior. I’m not kidding, it’s REALLY INFERIOR to pretty much any other SCM software.

Making zip files is still very useful.

Many times I’ve regretting not making an extra zip file to augment the source control work.

In a multi-developer environment, this is really important.

We work where everything gets shared instantly and there is no private sandbox so extra care must be taken with everyhing.

We use MSVSS, would like to switch but there just isn’t time to port to a new system of source control.