Today I had to perform a merge across two unrelated streams in Accurev. One stream was the root stream which contained the changes I wanted to merge. The other stream was created off a snapshot about 6 months old. The idea was to merge the fixes in the latest code in to an older branch. The fixes affected maybe 100 files across 30 or so issues. This took me whole day. None of the merges were particularly complex but yet here we are. So if you value your productivity do not use Accurev.
It was easy to find related issues. I did a diff by issues between the respective streams. From the diff it was easy to find the issues and each issue contained changed files. So far so good. Now the question is how to send these particular file versions in to the relevant workspace? The manual recommends to use change palette, which is conveniently greyed out and not accessible. I had to involve two of our support engineers, nether of them knew why the button was disabled.
Finally I figured out a way to look at the same issues from the stream history and there change palette was available. This is the most idiotic thing - one dialog has a button disabled, another similar dialog has it enabled. Now I would expect a merge function of some sort to be available in the change palette so I could selectively pick the changes that I want to merge with the version in the workspace. No such luck! You have to send your file in to the workspace overwriting the version with irrelevant changes, then you have to diff the version with the predecessor and revert most of the changes except for the ones you want. Instead of one simple operation it becomes two non intuitive ones. Although if the file did not need merging, it could be simply promoted if the promote button was not disabled. When it was disabled another merge was required.
After having the pleasure to use merge function of Mercurial, Accurev is terrible in comparison. As I described in my previous post, things get disabled and enabled using some arbitrary rules. The dialogs, described in the manual ether look different or dont exist or not accessible in a way presented in the manual. Somebody told me that I need to upgrade to the latest version and it is way better. Somehow I doubt this. If I am to go through the pain of upgrade, it would be to something like Git or Mercurial.