VSSからMercurialに変換する

弊社開発環境からMicrosoft製ソース破壊管理ツールVisual Source ShredderSafeを駆逐しMercurialに移行しました。

VSSから別のVCSへ移行するツールは大量にあるのですが日本語がまともに扱えなかったりそもそも動かなかったりして最終的に成功したのはhanaguro8/vss2gitだけでした。

私は検証していませんがツール自体はgit,Bazaarにも対応していますしソースがわかりやすいので他のVCSに対応させるのもさほど難しくは無いと思います。

基本的な使い方は

を見ていただければわかると思いますがいくつかの躓いた点を解説します。

  1. Mercurial周りにバグがあります。
    修正してPullRequestを送ってありますが2年以上更新の無いプロジェクトなのでいつ反映されるかわかりません。反映されるまでHotspring-r/vss2gitを使用してください。PR反映されました
  2. rubyが64bitだと死ぬ。
    ちゃんと解説ページにも添付ドキュメントにも書いてあるのですが見落としてしばらく悩みました。内部でCOMを呼び出すので32bit版rubyを使わないと死にます。
  3. Mercurialの言語設定が日本語だと死ぬ
    内部でMercurialの吐き出すメッセージを解析しているので英語以外の言語にしていると死にます。実行前に
    set LANGUAGE=en-us
    のように環境変数を設定すればMercurialの言語を一時的に変更できます。内部で環境変数を設定するよう修正されました
  4. 日本語のファイル名を使ってると死ぬ
    Mercurial側の問題ですが win32mbcs エクステンションを有効にしないと死にます。
    内部でMercurialリポジトリを作成してすぐにコミットされるのでリポジトリ個別設定で有効にしている時間はありません。日本語環境から頻繁に使うのでグローバルで有効にしてしまった方が良いです。