投稿

6月, 2015の投稿を表示しています

CVS リポジトリーを Mercurial へ変換 (SJIS コミットログを UTF-8 に変換)

Mercuiral にはリポジトリーを変換する機能があります。 かって CVSNT で作成していたリポジトリーを Mercurial に変換したので記録しておきます。 重要: この作業は Linux で作業した方が圧倒的にトラブルが少ないです。 Windows 環境では CVSNT が邪魔をして コンバート自体がうまく動作しません。 今回は CentOS 6.5 に Mercurial をソースからインストール した環境で作業を行いました。 1. コンバートエクステンションを有効にする 前提としてコンバートエクステンションを有効にしておく必要があります。 .hgrc に [extensions] hgext.convert= を追加して有効にしておきます。 2. hghook-cvslog-transcoder を用意する。 CVS で作成してきたリポジトリーのコミットログは SJIS (cp932) です。mercurial の機能だけでコンバートするとコミットログは SJIS のままなので文字化けしてしまいます。 そこで  hghook-cvslog-transcoder  を利用します。  ダウンロード と書いてあるリンクからダウンロードできます。ここでは ~/hghook-cvslog-transcoder に展開したとします。 3. CVSリポジトリーを取得する。 CVS リポジトリーをローカルにコピーします。ローカルにコピーした方がトラブルが少ないですし、やり直しも楽です。ここではコピーしたリポジトリーを ~/cvsroot とします。 Windows Server から Linux へのファイルコピーですが、今回は Windows の共有フォルダーにリポジトリーをコピーしてから Linux のファイルブラウザでコピーしました。 4. CVS から変換対象のモジュールをチェックアウトする。 コピーしたCVSリポジトリーから変換対象となるモジュールをチェックアウトします。ここでは module とします。 $ cvs -d ~/cvsroot co module 5. Mercurial にコンバート。 後は変換するだけです。 --config オプションで hghook-cvsl