I have been evaluating different version control programs for my company for the last month or two. My current evaluation is that all of them are broken, although I hope to discover a good solution someday soon.
Serena's Version Manager (PVCS)
I have spent a lot of time with Version Manager, and it has a number of deficiencies. Unfortunately, this is the product my company uses. They originally switched to VM because has client apps on mac, unix and windows. However, there are now a number of products that support that, so that is no longer an advantage.
For some reason, they released 7 versions of their product before they figured out that they shouldn't send two or three copies of the entire archive between the client and server while doing a transaction. They claim this is a form of reliability. Hrm. Version 8 now sends smaller amounts of data, which is good, but it is still slower than any other product I tried. They say if you care about speed, you should use their INET server, where you then use Internet Explorer (only, it doesn't support any other browser) to access your data, with limited features.
It does share files between projects quite nicely, and does that better than most. It defaults to the lock-modify-unlock model, but can be used in copy-modify-merge as well, although I wouldn't trust their diff tool at all. It doesn't support Unicode. It cannot track deletions or moving of files, and if you do move a file using their GUI tool, it will move it incorrectly, and if you have to recreate the project if something gets screwed up, it will move the file back to the old location. It cannot integrate with Visual Studio, if you use multiple projects in one VS project. Their archive files, while there is a nice one-to-one ratio of archive files to work files, are in a binary format, and I have had a number of archive files be destroyed, and AnswerLine (their technical support) had no explanation of why it happened, or any solution for recovering the data.
There was a large change from version 7.5 to version 8.0, and that upgrade is not smooth at all. I spent 12 hours yesterday (after spending a couple weeks with the new product) to try to convert a couple projects for real production use. I ended up spending a half hour with AnswerLine, trying to get one project upgraded. It looked like it worked, but it ended being broken, and actually still referring to old unconverted data, so when I removed the "old" data, everything stopped working. Their command-line tools do not parse spaces and other "funny" characters in a consistent way, and so escaping them are close to impossible. Thus, their claim that their tool does not require an consultant to setup the server is false. Remember this upgrade was exactly that, an upgrade between versions of their own software and they are unable to figure out how to do it correctly. Their solution is spend days finding the shared files, copying them over specially, and recreating the shared files. It is unacceptable for me to have the database down for a week to upgrade it.

Subversion (SVN)
I have only used Subversion a little, but server set up is quite easy and fast. They put a high priority on data integrity, and I have read from a number of long-term users that it hasn't ever had an unrecoverable error. They use journaling with a Berkeley database by default, and it supposedly can recreate any transaction, so unless you get a magnet near your harddrive, you should be alright. The developers brag that no one has ever lost any data with their product.
It also supports hot backups, which most products do not. A hot backup is when you can backup the server without shutting it down.
There are two big problems that keep me from using it. It is unable to share files between projects, you have to have your shared code in a separate directory (svn:externals), and even then, it treats that code differently, and so you have to explicitly take action on those directories, rather than recursively acting on everything, like the rest of the directories.
It also has trouble with platforms that have case-insensitive file systems, such as Windows. It can easily erase valid data if the case of a file changes. Since Windows will sometimes change the case, such as capitalizing the first letter, this is an easy problem to run into. Since they track file moving and deletions, presumably you can get the data back, but I am sure it is a pain to have to do that more than once or twice.
It will support file-locking shortly, but currently uses the copy-modify-merge model, which makes some people nervous. It uses a database format, which means you need their tools to get your data back. Most products do that, so they are all making it harder to recover together.
It supports binary diffs, which is excellent. Most other tools only support text diffs, and default to binary, so you have to explicitly tell it if an unknown extension is a text file.
It is extremely fast at the expense of client disk space. I did some tests with a project that was 100MB, and with Version Manager, it took 200 seconds to check the server to see if there were any updates (when there weren't any). Under SVN, it took 4 seconds. Pretty impressive. It actually doesn't use the network for some operations, such as checking to see what files have been modified locally, reverting your changes back to the latest version, and I think a couple more. It tracks file deletions and moves, so that when you go back to get an old version of the project, it will have the correct files and directories in place.
CVS and PVCS are unable to do that and silently fail.

Concurrent Versioning System (CVS)
Old standby. I have used it quite a bit for personal use, but never more than a couple developers. It has worked quite well for my purposes. And I don't care about branching, and renaming/moving/file-sharing, which lots of people complain about. I think it might be a little weak for a larger group of developers, although I do know some groups that use it and are perfectly happy with it.
It is pretty good for speed, although most of my work has been local. I did use it over AFS a while back and the performance was pretty poor, but that might have been my AFS client's fault. I have used it securely to SourceForge and it has worked pretty well.
Commercial companies always try scare you by telling you about how bad it is for corrupting files, but I haven't ever heard a user say that. It has one archive file per "real" file, so you can go in to the CVSROOT and modify the files as you like. It isn't entirely easy, but one could imagine editing the archive file if it contains text. If you were backing up a Word document, it would probably be hard to recover your data if it did break.

SourceSafe (VSS)
The database can be easily corrupted without your knowledge, due to bugs in the client. I have run the "analyze and fix" utility each time, and the data was recovered, at least as far as I can tell, without doing exhaustive checking. People generally say it has a 2GB limit for the database. It has this weird hashtable/filesystem way of storing the files, that I just don't like. I used it at my last company and it was pretty good. If I knew about branching then, it would have been a little better, although I hear it doesn't support anything fancy.
Contrary to popular opinion, if you have Microsoft's Universal Subscription, that does not gave you license to use SourceSafe for free. It is slow over a VPN connection, but SourceGear makes a SourceOffSite utility that is supposed to be really good, although in the time I have adminstrated it (about a month, for two users), it has crashed a couple of times.

BitKeeper
I haven't used this at all yet. People generally say it is really good, but really expensive, and the owner has made some in the open source community mad, due to the restrictive (albeit pseudo-free) license. I have a request in for a quote, but haven't heard back from them yet.

Perforce
The biggest gripe I have with Perforce is that you have to get used to a different mindset of how you think about the projects. I have not used it enough or read about it to be able to say anything more.

SourceVault
I have only tried out their demo server, so I can't comment too much on it. It seems nice, and they say it is better than VSS. I haven't looked up customer reviews yet.
Posted by Jon Daley on October 15, 2004, 2:42 pm | Read 172935 times
Category Programming: [first] [previous] [next] [newest] Reviews: [first] [previous] [next] [newest]
Comments
«Previous   1 2 3  Next»

I think mostly you should read the stuff I already wrote, did you do that?

I think you should consider open source products as well - is there a reason you didn't list them?

Did Serena change their product name yet again? They sure have a strange business model. They historically have not been able to support their products well when they switched from completely different products every year or two. Their first level support were completely useless, and you always had to get to one of three people who actually knew the product better than I did. We have left Serena's software for our new products, and are only using it for the old products until they die off.

Serena's product certainly do not deserve to be compared to your upper-end products. I have heard very good things about Bitkeeper, since the author stole the application from Sun (I think that is the company, haven't thought about it in a long time) when he worked there. If we could just convince Sun to open source/release their internal software, we would all do really well. They have not done that, I am not sure why - they should at least sell it, if they aren't willing to give it away. I haven't ever met anyone who has used it who would ever use anything else.

Posted by Jon Daley on March 8, 2007, 12:20 pm

Good post...quite useful...thank you...

Quick question:

You have mentioned that PVCS doesn't support unicode; but on the contrary Serena support team is saying they do support it;

I am unsure whom to believe; could you pls explain your position.

Thanks

Posted by Venkat on July 13, 2007, 1:15 pm

I have only used versions up to 8.0.2.3, so it is possible that they now support it.

I talked to their second-tier support (I think only one of the original three people who actually know the product are left) they said that I was getting such huge archive files because PVCS didn't support unicode, and it wouldn't do diffs on the files, because of the file extension was .keyfile, but if I manually told it to do diffs by adding that extension, it would keep the archive files smaller. So, I added .keyfile to the list of diffable outputs, and the archive files stayed smaller, but the diff tool could not output any useful diffs, and just reported that it was a binary file, and couldn't show me a diff. So, that is what I mean when I say they don't support unicode. The files check in and out fine, and you can get old revisions, etc. It behaves exactly the way you would expect it to treat a .jpg, ie. no diffs.

I can't remember if the large archive problem was before or after the upgrade to 8.0 (and the associated splitting of the archives), so perhaps in the new scheme, the archive file doesn't double in size on each commit, but certainly it still doesn't diff the unicode file.

For what it is worth, we now use TortoiseSVN as the client for subversion, and TortoiseMerge doesn't understand unicode either, but you can tell it to use WinMerge for .keyfile files, and then it works, though when there are conflicts, there tends to be trouble (strange binary characters show up in the file, rather than the conflict markers - haven't investigated that enough yet, most of our files aren't unicode, so it hasn't been enough of an issue to worry about.

Posted by jondaley on July 16, 2007, 12:20 pm

I see someone mentioned Accurev above. Based on my experience you would be hard pressed to find a better tool that is as stable and easy to administer as it is elegant and powerful. The price isn't too bad either, but you get a whole lot more with it than you would with older file-based branch and label tools. Check out its stream concept sometime.

http://www.cmcrossroads.com/product-reviews/product-reviews/accurev--4.5-%11-the-next-generation-in-scm.html

http://www.cmcrossroads.com/option,com_smf/Itemid,177/topic,70170.0.html

Good luck to all of us!

Srini

Posted by Srinivas on November 20, 2007, 12:42 pm

Srini: I see other folks have asked if you work for Accurev, but you said that you don't... I guess you just really, really like their software to post on so many different blogs and web pages about their product.

You should probably explain who you are in your posts.

I did see your various troubles in configuring ClearCase, which probably influences your decision somewhat.

For me, I have found subversion to be excellent, and so after three or four years, or whatever it has been, I continue to think subversion is the best one out there. I look forward to the next release that will handle merges even better than it already does.

I introduced subversion at my previous company, and while there was some resistance to the change, everyone is now used to it, and going full steam ahead.

Posted by Jon Daley on November 22, 2007, 9:49 am

Hi All,

Presently we are using PVCS as version control tool. But here problem is we have only 2 userids to use pvcs for my team, as licence cost has to pay for evrey user.

Now my company wants to use CVS as it is open source, so any one can explian proc and cons based on below information.
1. There are multiple teams supposed to use, every developer supposed to have a userid.
2. What are the pitfalls of CVS?.
3. Compare to PVCS how it is better and worse?
4. what is the approach to implement CVS for my project, how to start implementaion and pre requisites?
5. Pls sned me if any one haveing slie show on CVS how it works etc...
6. if any issues comes whom to approach, possible way to solve those issues?

I am greatful if any one help me out in this regard..thanks in advance..

Ananth.

Posted by Ananth on December 3, 2007, 2:29 am

As you might expect, I'd recommend subversion over cvs. I wonder if the CVS authors have any reasons why you should use cvs over subversion? Maybe for really small, one directory projects, you don't need the overhead of the subversion database, etc.

PVCS is designed to be a gui for CVS, right - so most of the features are the same. I'd expect that cvs has to be faster than PVCS, at least faster than all versions prior to 8.0, and newer versions than 8.0 if you aren't using split archives.

Neither can handle files moving from one directory to another. I am not sure if CVS can handle file renames, PVCS cannot.

If you are willing to live without the history stored in PVCS, and start fresh with your CVS and/or subversion, you will save yourself a lot of trouble. PVCS's command line scripts have some quirkiness with spaces and escaping backslashes, etc. which will waste some of your time as you work through those bugs.

I haven't used cvs on larger projects, so I can't comment much more than that. subversion was originally designed to be a drop-in replacement for cvs, but fixing the half dozen things that were annoying in CVS.

Posted by Jon Daley on December 5, 2007, 5:16 pm

My company is looking to move from PVCS, however I'm having a lot of difficulty identifying a suitable replacement.

We have multiple projects with hundreds of source files in each, with several instances of header files shared between projects. The sharing alone rules out subversion (it makes me shudder to think of restructuring everything into directories). PVCS has been reliable for us, but horrendously slow when it comes to doing large scale checkouts or labels.

Can anyone suggest a system that handles shared files and is as fast & reliable as SVN?

Posted by Andrew on January 2, 2008, 7:49 pm

Yes, we took the plunge and moved all of the shared files to directories, or else changed the include paths to include the directory where the file is.

After we did that it turned out that due to the svn:external tag not working across branches (that'd be a trick - to have the svn:external magically change when you create a branch.

I don't know anything about the "new" tool that the linux kernel folks are using: git. I'd take some time to check that out. If you do that, and take the time to write up a paragraph or two, I can add it to the top of this page for the future.

Posted by jondaley on January 3, 2008, 10:51 am

Well ... git is linux only and its a distributed system like Bitkeeper. We were after a cross platform, client/server system with good GUI tools + SCC integration on the client end, so for us git doesn't fit the bill.

We found a way around the shared files problem - we'll just bundle everything into one repository and use the directory structure to seperate projects. We now have the problem that the free UI tools that come with SVN are pretty poor when it comes to labelling (or tagging as they call it) compared to PVCS. It does seem there's no ready-fit solution in open-source land I'm afraid :\

Posted by Andrew on January 13, 2008, 10:16 pm

I haven't found a very good GUI for subversion. I just use the command line, but I would recommend tortoise, as the best free solution. My only complaint with it is that it slows down explorer noticeably, so I uninstalled it, since it annoyed me too much. The developers don't seem to notice it, and suggest various things to the people who complain about it, but the last version I tried, it was still happening. I think the explorer plugins are hard to get right, and not slow down stuff. Winzip is annoying in that way too.

I forget the name of a commercial solution, either SmartSVN or FastSVN or something like that. I haven't used it myself, but watched some people, and it looked pretty good.

Posted by jondaley on January 13, 2008, 10:27 pm

Jon, I found this blog to be very helpful. Like many others here, we too are looking for good version/revision control software. We don't mind the cost, just want something that will work well. It would be for a new development environment, so there are virtually no limitations, other than it must have a GUI. I personally only have experience with Micro$oft VSS. I liked it, but didn't like the way its database was laid out.

Not really looking for answers here, just wanted to say thanks for posting your experience! I think I've narrowed it down to Subversion, VSS and perforce (Still need to figure out what perforce is!)

Posted by Derrick on March 25, 2008, 3:03 pm

I forget how many years I have been using subversion (4?), but I would still pick it above all of the others that I have used. I am not sure how much subversion would have to cost before I would go with something else.

Posted by Jon Daley on March 25, 2008, 4:48 pm

I have used SVN, Perforce, Clearcase, CVS, and a few other SCM products in my time as a software engineer.

Out of all the SCM products available, I prefer Perforce. It's easy to setup, easy to deploy, and the inter-branch file histories really help when you need to merge between one branch and another. It works well. The licensing is a little pricey, but perforce has never failed me.

by comparison, SVN is just a slightly improved version of CVS which doesn't say anything postive about the SCM. If you have really simplistic development demands, then I guess can work for you. But once you have to deal with more than a handful of developers, or when the requirements demand multiple branches, I highly recommend moving away from SVN and CVS. Merging branches with these products has been a horrible experience.

Posted by chris on October 14, 2008, 3:47 pm

I think "slightly improved" is an exaggeration, either because you are trying to sell Perforce, or you haven't used SVN in the last 10 years.

Additionally, I have only used the newest release (1.5) a bit, but it makes branching even smarter than it already was, primarily, you can now merge branches from either direction multiple times, and subversion will not merge the same change twice.

Posted by jondaley on October 22, 2008, 11:47 am
«Previous   1 2 3  Next»
Add Comment
Add comment
E-mail me when comments occur on this article

culpable-adaptable