Selective Repository Replication based on Lines of Development for CVS
Context:
The customer develops a web-based service application with a mixture of product- and project-specific parts. The source code is contained in a CVS repository in the customer's intranet.
Problem:
The customer wanted to make certain parts or aspects of the software available as `open source', while certain features were to remain hidden from public access. The hidden parts might be whole components or subsystems as well as individual development lines (customer projects branched from a standard product).
Lösung:
The solution we designed and implemented is based on an `insecure' public mirror of the internal CVS repository, which contains only the open source parts of the customer's product and project code.
CVSup is used to frequently replicate changes from the master repository to the public mirror. Hiding whole components during replication is easy, as CVSup already can be configured to restrict its replication to certain collections of files.
To be able to hide certain branches from replication, we had to extend the open
source code of CVSup by a special branch-filtering feature based on sets of CVS tag names selected by regular expressions or shell globbing expressions. This extension was later integrated back to the original CVSup CVS repository and is now part of CVSup.
This is a nice example of how both a commercial customer and an open source project can benefit from a certain solution.


