開発環境→内部結合テスト環境→外部結合テスト環境→本番環境とモジュールリリースの際には様々な環境へのリリースを実施する。リリースのタイミングによってこの機能だけ先行リリースとか、至急このバグのみリリースといった状態が現実的には発生する。
ただ、ソースの管理は一元化されているので、そのリリースを試用とすると特定のソースのみ抽出し、パッチを充ててリリースといった作業がどうしても発生する。
また、それ以外にも、パッケージ開発においては、本体のパッケージの開発とカスタマイズバージョン間でバージョンアップの整合性を取っていくのは、brancheやtagといったCVS、Subversionの機能を使用しても限界があり破綻する。
結局何らか、運用でカバーする手法を考えるしかないのかと思っていたが、分散管理可能な構成管理ツールを導入すれば意外とハマルのかもしれない。
CVSやSVNとは違って、Mercurialという構成管理ツールには、分散リポジトリという概念が導入されている。一度試してみても良いかも。
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial.html