10 年以上にわたって非常に大きなレガシー CVS リポジトリ (66GiB) があり、さらに増加しています。現在、いくつかの下請け会社があり、いくつかのモジュールとブランチに取り組む必要があります。
それらのためにいくつかのブランチを作成し、そのブランチを送信する必要があります。また、それらの変更を時々メイン ブランチにマージする必要があります。
他のすべての人ではなく、下請け業者のみを移行したいようです。これを行わないことを強くお勧めします。全員を改宗させるか、誰も改宗させないかのどちらかです。混合システムを実行することは、特に DVCS の人々から変更を取得することになると、非常に苦痛です。
私たちの懸念は次のとおりです。
- リポジトリ全体を完全に提供することはできません。主に懸念されるのはセキュリティです。
CVS リポジトリに複数のモジュールがあり、それらにすべてのモジュールを提供することはできませんか、またはそれらがアクセスできる履歴を制限したいですか?
DVCS は、モジュールが 1 つのリポジトリに複数のモジュールを格納するのではなく、個別のリポジトリとして格納されている場合にはるかにうまく機能します*。これには多くの理由がありますが、主に異なるモジュールの変更によって不要なマージが発生しないようにするためです。
(* CVCS もそうですが、通常、新しいモジュールを作成するのは非常に面倒で、一度しか実行しない場合があります。分割した場合、66GB にはならないのではないかと思います。)
したがって、変換する場合は、モジュールを分離する必要があります。これにより、一部のモジュールを共有し、他のモジュールを共有できなくなります。Mercurial は、変換中にマルチ モジュール リポジトリ内に設定されたパスからリポジトリを作成できることを知っています。Git にも同様の機能があると思います。
- 「HEAD」バージョンのコードだけでなく、何らかの履歴情報を送信する必要があります。
これはほとんど DVCS を指示します。定義属性です。
- まだいくつかの開発作業を行っているため、時々変更セットを送信する必要があります。
...これが、彼らと同じ VC ツールを使用する必要がある理由です。そうしないと、システム間での変更セットの変換にすべての時間を費やすことになります。
GIT と Mercurial は CVS からの移行に適していますか? GIT/Mercurial は私たちのニーズを満たすことができますか?
はい & はい。ただし、プッシュ ボタンのトランジションではありません。計画、コミットメント、教育が必要です。
編集:実際には、中央レポの一部に基づいてオフサイト レポを作成する機能を備えた、マルチサイト機能を備えた集中型リビジョン コントロールが必要だと思います。また、サイト間で簡単にマージできます。
集中型だが分散型のバージョン管理システム。わかった!
最後に、集中型/分散型の開発手法と集中型/分散型のツールを混同しないでください。分散型 VCS を使用した集中型開発モデルで作業することは完全に合理的です。