これが私が思いついた方法、いぼ、そしてすべてです。私は基本的にCVSについて何も知らず、Mercurialについても(まだ)あまり知らないので、これは少し「貨物カルト」です。
スナップショットを撮ることができるWindowsXP仮想マシンを持っているので、それを実行してから、CVSNTとWindowsコマンドラインバージョンのMercurialをインストールしました(メインマシンでTortoiseHgを使用しています)。これをVMで行ったので、CVSNT、Mercurial、およびこの1回限りの移行中に作成する必要のあるその他のものを簡単に取り除くことができました。ええ、私はおそらくこれを行う必要はありませんでしたが、VMはすでに利用可能であり、何年にもわたってインストール/アンインストールのサイクルから十分な数のアプリが残っています。:-)
私の知る限り、CVSNTは、Windowsマシン上でCVSサーバーを簡単にセットアップできる唯一のプログラムでした。これはかつては無料だったようですが、所有者の現在のサイトは現在お金を要求しています。それは悪いことではありませんが、1回限りの変換を行うためだけにお金を使うことを正当化することはできませんでした。私は最終的にGoogle検索で古いバージョンのCVSNTを追跡し、問題なくインストールしました。
この変換を機能させる方法を学習しているときに取ったメモは次のとおりです。
ロングバージョン
必要なソースコードフォルダをメインコンピュータのドライブからVMのドライブにコピーします。さまざまな「、v」ファイルをC:\RCSフォルダー構造からVM上のこの同じソースコードフォルダーにコピーします。C:\ RCSの対応するフォルダーから、vファイルをコピーするだけです。VMでコマンドプロンプトボックスを開き、次のように入力します。
path %PATH%;C:\Program Files\cvsnt
mkdir \cvs-repo [or clean the folder out if it already exists]
cvs -d \cvs-repo init
[A DIR of \cvs-repo should show a CVSROOT folder in there.]
にソースコードフォルダのコピーを作成します\cvs-repo
。\cvs-repo
これで、CVSROOTと新しいフォルダーの2つのフォルダーが作成されます。適切な「、v」ファイルもコピーします。
mkdir \cvs-checkout [or clean that folder out if it already exists]
cd \cvs-checkout
cvs -d \cvs-repo co name_of_your_source_code_folder
「\cvs-checkout\ name_of_your_source_code_folder」のDIRには、CVSからチェックアウトされたすべてのソースコードファイルが表示されます。
まだ行っていない場合は、https: //www.mercurial-scm.org/からMercurialをダウンロードしてインストールしてください。メモ帳のコピーを開き、ファイル「C:\ ProgramFiles \ Mercurial \ hgrc.d\Mercurial.rc」をその中にドラッグします。「[extensions]」の下で、「;convert =
」行の先頭にあるセミコロンを削除します。ファイルを「C:\ DocumentsandSettings \ user_name\Mercurial.ini」に保存します
VMコマンドラインに戻ります。
path %PATH%;C:\Program Files\Mercurial
mkdir \my-repo.hg [or clean that folder out if it already exists]
hg convert --datesort \cvs-checkout\source_code_folder_name \my-repo.hg
cd \my-repo.hg
[A DIR of \my-repo.hg should show a new ".hg" folder.]
hg update
[A DIR should now show the ".hg" folder and all the checked-out files.]
「.hg」フォルダを\my-repoからメインコンピュータのハードドライブのソースコードフォルダにコピーします。宛先フォルダーがTortoiseHgに表示され、適切な変更履歴がすべて表示されますが、すべてのファイルが変更済みとしてマークされます(赤い円の感嘆符のアイコンオーバーレイ)。これは、新しいMercurialリポジトリが、ファイルがWindows(0x0D、0x0A)ではなくUnix行末(0x0A)でチェックインされたと見なすためです。これは「hgconvert」プロセスで発生するようですが、それを回避する方法は見つかりませんでした。
ショートバージョン
すべてがVMに設定されたら、次のようにします。
- \ cvs-repo、\ cvs-checkout、および\my-repo.hgのすべてを削除します。
- コマンドラインで、
cvs -d \cvs-repo init
。
- メインマシンに戻り、ソースコードフォルダーを仮想マシンの共有フォルダーにコピーします(これはVirtualBoxで行う方法です。他のVMソフトウェアでは、フォルダーをVMにドラッグアンドドロップするだけでよい場合があります)。
- 適切な「、v」ファイルを仮想マシン共有フォルダーのソースコードフォルダーにコピーします。
- VMに戻り、ソースコードフォルダーを\cvs-repoに移動します。
cd \cvs-checkout
cvs -d \cvs-repo co name_of_your_source_code_folder
hg convert --datesort \cvs-checkout\name_of_your_source_code_folder \my-repo.hg
cd \my-repo.hg
hg update
- .hgフォルダーを\my-repoからVMのL:ドライブにコピーします(LはVM共有フォルダーのマップされたドライブ文字です)。
- そのフォルダーを仮想マシン転送フォルダーからホストコンピューターの最終的なソースコードフォルダーに移動します。
便利なバッチファイル
これが機能するようになったら、VMにこのバッチファイルを設定して、プロセスを可能な限り自動化します。
@echo off
rem Converts source code under RCS control to a Mercurial repository.
rem This batch takes one argument: the name of the source-code folder (in quotes if necessary).
rem
rem This is for a VirtualBox VM that already has CVSNT and Mercurial installed, and has a Shared Folder mapped to drive L.
@echo On the host, copy the source-code folder into the Virtual Machine Transfer folder. Copy the appropriate ",v" files into the source-code folder in the Virtual Machine Transfer folder.
pause
@echo on
cd \
rmdir /S/Q \cvs-repo
mkdir \cvs-repo
rmdir /S/Q \cvs-checkout
mkdir \cvs-checkout
rmdir /S/Q \my-repo.hg
mkdir \my-repo.hg
cvs -d \cvs-repo init
xcopy L:\%1 \cvs-repo\%1 /E/I
cd \cvs-checkout
cvs -d \cvs-repo co %1
hg convert --datesort %1 \my-repo.hg
cd \my-repo.hg
hg update
xcopy \my-repo.hg\.hg L:\.hg /E/I
結論
したがって、これはすべて機能しましたが、行末が間違っているファイルが残りました。この質問を見ると、この問題を抱えているのは私だけではないことがわかります。私はこれで生きることができますが、誰かが解決策を知っているなら、それでも修正したいと思います。