#100 GitのリポジトリをMercurialのリポジトリに変換する

私は日々の作業にGitとMercurialという、2種類のVCS(Version Control System : バージョン管理システム)を使っています。

Git - Fast Version Control System
Mercurial SCM

どちらも所謂「分散VCS」と呼ばれるもので、その中でも最も使いやすいツールの2大巨頭だと考えています。

で、Gitで作業の内容を管理していて、「あー、でもこれをMercurialでも管理したいなぁ」とか「BitBucketが便利だからリリース以降はMercurialでやろうかな?」って思ったりすることもあります。
そのように、Git → Mercurialというリポジトリの変換をやってみようというのが今回の趣旨です。
(逆ルートのモチベーションもあるんですが、今回はgit2hgだけに絞りたかったので、敢えて書きませんでした)

準備

GitとMercurialのインストール

まず、お使いの端末にGitとMercurialがインストールされていることが前提です。
まだの方は、最新版のGitおよびMercurialを入れておきましょう。
Windows環境の方は、Mercurial環境としてTortoiseHgが大変便利だと思います。

TortoiseHg

Convert extensionの有効化

続いて、Mercurialの"Convert extension"なるものを有効化します。
Mercurialは、そのままでも多くの機能を備えているのですが、デフォルトでは無効にされている機能もあります。
それを有効にすることで、Mercurialをさらに強力なものにすることが出来ます。
(もともと無効にするくらいなので、多少強力すぎる機能もあります)
なお、このextensionは自分で作ることも出来ます。

extensionの有効化は、.hgrcを修正する方法と、(TortoiseHgをお使いの方は)TortoiseHgの設定を変更する方法の2通りあります。

.hgrcを修正する

.hgrcファイルは、Mercurialの設定ファイルです。
ユーザ設定とリポジトリ設定があり、前者はそのユーザが操作する全てのMercurialリポジトリ、後者はその設定をしたMercurialリポジトリが対象になります。
今回はユーザ設定用の.hgrcを修正しましょう。

Unix系のOSでは$HOME/.hgrcが既に出来ているか、まだない場合はそれを作成すればMercurialはその設定内容を見てくれるようになります。
Windowsでは%USERPROFILE%か%HOME%の配下にMercurial.iniまたは.hgrcというファイルがあればそれがユーザ設定ファイルになります。
私はWindowsユーザですが、何かと便利なので環境変数HOMEを設定しています。

さて、.hgrcファイルに次の記述を追加します。
[extensions]
hgext.convert=
これだけでオッケーです。
(既に[extensions]カテゴリがある場合は、2行目の宣言を追加するだけです)

TortoiseHgの設定を変更する

Windows環境でTortoiseHgを導入している場合は、エクスプローラ上の任意の箇所で右クリック → TortoiseHg → ユーザ設定、と選択します。
するとユーザ設定の画面が表示されるので、「エクステンション」メニューを選択。
左列に「convert」チェックボックスがあると思うので、チェックを付けてOKボタンを押下します。
これだけで設定が完了です。

hg convert

さて、設定が出来たらコマンドを発行するだけです。
今回は例として、私が以前作成したMotsunabeZonbieProjectというGitリポジトリをMercurialリポジトリに変換してみようと思います。
コマンドは"hg convert (変換元リポジトリ) [(変換先リポジトリ)]"です。
D:\>cd Coding\Python

D:\Coding\Python>hg convert MotsunabeZonbieProject
螟画鋤蜈医→縺励※ MotsunabeZombieProject-hg 繧呈Φ螳・螟画鋤蜈医Μ繝昴ず繝医ΜMotsunabeZombieProject-hg 縺ョ蛻晄悄蛹紋クュ荳ュ豁「: 隕∵アゅ&繧後◆繝・・繝ォ 'git' 繧定ヲ九▽縺代k縺薙→縺後〒縺阪∪縺帙s 
上手くいった方、おめでとうございます。
失敗した方、たぶんWindows環境の方ではないでしょうか…? 
上のような読めないメッセージが出ませんでしたか?
一応、そのような方にだけは上手くエラーをやり過ごす方法があります。
それ以外のエラーが出た方は、お手数ですがGoogle先生などのお力をお借りください(´・ω・`)

エラーの対処法

さて、ここでは次の条件を満たすエラーメッセージが出力されている場合に、その対処法を説明します。
  • "変換元に指定したディレクトリ名" + "-hg"という文字列が出力されている
  • "'git'"という文字列が出力されている
これはどういうことかと言いますと、「変換したかったんだけど、gitっていうファイルが見つからないよ!」と怒られているのです。 
Windows環境ですと、GitはCygwinにインストールするかmsysgitをインストールするかだと思いますので、直接Gitを叩くことが出来ないのです。

なので、皆さんがGitを触れる環境で、もう一度先ほどのコマンドを実行してください。

私はmsysgitを使っているので、Git Bashを立ち上げます。
Gab_km@Shangri-La /c/Users/Gab_km
$ cd /d

Gab_km@Shangri-La /d
$ cd Coding/Python/

Gab_km@Shangri-La /d/Coding/Python
$ hg convert MotsunabeZonbieProject/
たぶん、これで上手く行くんじゃないでしょうか。

トラックバックURL

#100 GitのリポジトリをMercurialのリポジトリに変換する へのトラックバック

まだトラックバックはありません。

#100 GitのリポジトリをMercurialのリポジトリに変換する へのコメント一覧

まだコメントはありません。

コメントする

#100 GitのリポジトリをMercurialのリポジトリに変換する にコメントする
絵文字
プロフィール
あわせて読みたい
あわせて読みたい
記事検索
Project Euler
なかのひと
アクセス解析
Coderwall
  • ライブドアブログ

トップに戻る