CVS リポジトリーを Mercurial へ変換 (SJIS コミットログを UTF-8 に変換)
Mercuiral にはリポジトリーを変換する機能があります。
かって CVSNT で作成していたリポジトリーを Mercurial に変換したので記録しておきます。
重要: この作業は Linux で作業した方が圧倒的にトラブルが少ないです。 Windows 環境では CVSNT が邪魔をして コンバート自体がうまく動作しません。
今回は CentOS 6.5 に Mercurial をソースからインストールした環境で作業を行いました。
を追加して有効にしておきます。
そこで hghook-cvslog-transcoder を利用します。 ダウンロードと書いてあるリンクからダウンロードできます。ここでは ~/hghook-cvslog-transcoder に展開したとします。
Windows Server から Linux へのファイルコピーですが、今回は Windows の共有フォルダーにリポジトリーをコピーしてから Linux のファイルブラウザでコピーしました。
エラーが出なければ終了です。
以前コンバートしたときはログの変換のために一旦 cvs2svn で SVN に変換してから Mercurial に変換していました。それに比べたら hghook-cvslog-transcoder を使った方が全然便利です。
かって 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-cvslog-transcoder を指定します。出力先は module-hg です。$ hg --config hooks.cvslog=python:~/hghook-cvslog-transcoder/cvslog-transcoder.py:cp932 convert module module-hg
エラーが出なければ終了です。
以前コンバートしたときはログの変換のために一旦 cvs2svn で SVN に変換してから Mercurial に変換していました。それに比べたら hghook-cvslog-transcoder を使った方が全然便利です。
コメント
コメントを投稿