And why anything is better than Visual Source Safe.
We recently had the following scenario:
Feature #7256 was a major piece of work, having taken several months to implement and which Miranda had written in version 5.0 of the code-stream.
Version 5.0 is the latest and greatest version, it is unstable, in active development, with other developers regularly committing to the same area of source code.
Just as Miranda completes the feature, it transpires that we actually need to ship feature #7256 with version 4.0.
We are going to have to do a merge. The code is in Visual Source Safe.
Fortunately, The Guru takes it upon himself to do this task. He knows VSS, he knows the product. He’s done this before, he says.
He locks himself away in his office and starts to diff, check-out, trawl through history, and try to determine exactly which of the intimidating collection of files might contain changes relating to Feature #7256, before then copying them across to the 4.0 version.
A week later, as the Guru is still busy merging, the same scenario comes up again, but this time it is in a project that has already been migrated to Team System. Sarah needs to merge Feature #1987 from version 5.0 to version 4.0.
Now, we are all relatively new to TeamSystem, and merging is not something we have had a lot of experience with yet.
So, I wander over to Sarah’s desk, and we begin the seemingly daunting task. She right clicks on version 5, and selects merge. She selects the target as version 4. She then specifies that she only wants to merge specific change-sets and then selects all her changes related to Feature #1987 from the drop-down view. She clicks ‘finish’.
It seems too quick to be true. We do a diff to confirm that we have all the changes we needed.
They’re all there.
What has taken The Guru over a week to battle with, it has taken Sarah all of 10 minutes. I don’t have the heart to tell The Guru.
While most source control systems support merging, up until now it’s never been an easy task. Even in systems such as Subversion, users will still prefer to do a manual copy and paste merge, rather than rely on the system doing it for them. It requires a mastery of the command-line, and an in-depth understanding of the mechanisms of the underlying source control tool.
Microsoft has just introduced drag-and-drop merging*. That’s going to be pretty hard to beat.
*Well actually not quite, but they are promising true visual drag and drop merging in the next release of TFS.