Merging with CVS

From "Teala Spitzbarth" <teala@intersan.net>

"re: merging with CVS - just be careful if you start merging a lot of files off a branch - I've had developers try it and have chunks of code go missing. My assumption is that the algorithm within CVS for merging is not very robust? Hence if a parallel model is attempted with lots of merging from branches back to the trunk - I think there will need to be scripts wrapped around the -j commands to buffer any cvs merging foibles."

A guide to Software Configuration Management

(Leon, 2000) says about the future of parallel development: "In the case of parallel branches that are used for concurrent development, the sophisticated tools allow more than one user to make modifications to the same file(s) and then the tool merges those parallel versions. The merging capabilities of the SCM tools are increasing and that makes the life of the person doing the merging a lot easier. Now the tools can compare the different parallel versions against a common ancestor and highlight the areas where they are different and where the changes have been made. According to Burrows [1], the capability of modern merge tools is now so strong that users are tempted to accept the tools' automatic resolutions and omit essential testing processes, which is not at all recommended." (Page 251)

Conclusion

We see here that there are some very powerful software tools that can take care of merging changes between versions. However, care must be taken to verify that conflicts where resolved correctly, and that all changes where applied to the destination code.

With some merges, you'll know instantly at a compile time that the merge failed. However, a change does not make it into the diff that gets applied to the destination branch, then it will compile fine, without the change. This is why you want to first do a diff of the two branches, examine the output to ensure that is what is wanted, then finally do the merge. After a merge and rebuild, the unit and functional tests should be rerun to ensure the change did get merged correctly. --Wim

... back to CVSReleaseManagement