リポジトリを操作するシステムが欲しい。

上に書いたような操作をするシステムが欲しい。仮にこれをシステムAと呼ぶ。様々なバージョン管理システムとシステムAとの間でリポジトリの相互変換ができれば、異なるバージョン管理システムで管理しているものを統合することができる。これは大変に便利だと思う。

以下の問題がある

  1. 様々なバージョン管理システムリポジトリとシステムAのリポジトリは、はたして相互変換できるのか
  2. ブランチの扱いをどうするか

1については、たとえばSubversionのコミットはアトミックなので、複数のファイルが同じリビジョン番号をもつが、CVSではファイルごとに独立したリビジョン番号をもつ。この問題は、いちどすべてをファイルごとのリビジョン管理に置き換えて、日時とコミットメッセージが同じものを同じリビジョンにまとめるという方法で解決できるのではないかと思う。

2については、Subversionではブランチはディレクトリとして管理されるが、Mercurialではそれぞれのリビジョンをノードとするツリーとして管理される。この問題の解決方法はわからない。