Plan for RCS - Mercurial Advent Calendar 2012

2012 年 12 月 11 日 はてなブックマークへ追加 はてなブックマーク - Plan for RCS - Mercurial Advent Calendar 2012 Bookmark this on Delicious

Mercurial Advent Calendar 2012 の 11 日目です。

RCS というバージョン管理システムをご存知でしょうか? 時は 1990 年、日本がバブル景気に沸いていた頃に使われていたツールです。 当時、湾岸戦争でナディアが 3 週飛んだことを今でも憶えています。懐かしいですね。

初めての人のために RCS の特徴をいくつかあげておきますね。

サーバー不要という点がウケて、分散バージョン管理システムが出てくるまでは 手放せなかった人も居るのではないかと思います。 CVS と Subversion の 20 年を経て、時代は分散 RCS へ回帰したのかもしれません。

RCS はここから入手できます。

git clone git://git.savannah.gnu.org/rcs.git

RCS to Hg

さて、 RCS を Mercurial リポジトリへ変換するには、どうすればいいのでしょうか?

まず、簡単な方法から。

CVS を経由

RCS と CVS は構造がよく似ているため、 CVS に見せかけて変換することができます。

手順はこれだけです。

  1. CVS リポジトリを作る
  2. RCS/ の管理データを CVS リポジトリへコピー
  3. CVS からチェックアウト
  4. hg convert で CVS to Hg の変換をかける

詳しくは Converting from RCS - Mercurial Wiki を見てください。

Tailor を使う

RCS は単機能なため、それを補うために社内フォーマットの怪しげなファイルが 紐付いていたりしないでしょうか?

例えば、

などを解析する必要があるかもしれません。

こういった手間のかかるやつをやっつけるには、 Tailor が使えます。

tailor.vcpx.repository の各モジュールを参考にしながら、自分用の RepositoryUpdatableSourceWorkingDir クラスを実装しましょう。

myrcs というリポジトリモジュールを書いたなら、 Tailor のプロジェクトファイル は恐らくこんなです:

[DEFAULT]
verbose = True
projects = foo

[foo]
target = hg:target_foo
start-revision = INITIAL
# /path/to/root の中に Tailor の状態ファイルや変換先リポジトリができる
root-directory = /path/to/root
state-file = foo.state
source = myrcs:source_foo
# /path/to/root/foo に変換先の Mercurial リポジトリができる
subdir = foo

[myrcs:source_foo]
repository = /path/to/foo/RCS

[hg:target_foo]
# 特になし

まとめ

変換が面倒になる前に、新しいツールへ移行しましょう。

コメント

blog comments powered by Disqus