Git ミラーを作る

posted by Steve Losh on November 9, 2009

Mercurial のような分散バージョン管理システムの中では、 恐らく Git が最も有名でしょう。 Mercurial を使っているなら、そのプロジェクトの Git ミラーを作るのは訳もないことです。 Git ユーザーが貢献できるようにね!

hg-git のインストール

まず、 hg-git プラグインをダウンロードする必要があります:

easy_install dulwich
hg clone http://bitbucket.org/durin42/hg-git/

ダウンロードしたら、次の行を ~/.hgrc ファイルへ追加しましょう:

[extensions]
hggit = /path/to/hg-git

GitHub のアカウントを作る

Git ミラーの置き場が必要でしょう。 それには GitHub が最適です。さぁ、まだアカウントを持っていないなら、 GitHub に サインアップ しましょう。

GitHub にリポジトリを作る

さて、 GitHub のアカウントができたので、 「New Repository」ボタンを押してリポジトリを作りましょう。

新しいリポジトリを作ると、このようなページを目にすることと思います:

GitHub New Repo Sample

git@github.com:username/project.git という URL がありましたか? これを忘れないように。 あなたがミラーを push する時に必要です。

プロジェクトを push する

さて、 hg-git のインストールが終わり、 GitHub にプロジェクトのリポジトリができたところで、 Mercurial リポジトリを GitHub へ push する必要があります。まず、 Mercurial リポジトリの .hg/hgrc ファイルを編集し、次のように Git の URL を追加します:

[paths]
git = git+ssh://git@github.com/username/project.git

要注意: github.com の次の :/ (スラッシュ) へ置き換える必要があります。 リポジトリパスの扱い方を Mercurial に合わせるためです!

言うまでもないですが、 usernameproject も適当な値へ置き換えてください。

さぁ、後は git パスへ push するだけで、ミラーのできあがりです:

hg push git

これには数秒かかります。特に大きいリポジトリの場合はね。 完了すると、 100% 機能する Git ミラーが http://github.com/username/project/ にできあがります。 Git ユーザーはあなたのプロジェクトを git clone git://github.com/username/project.git で clone でき、 あなたが Mercurial を使っていることにはきっと気づかないでしょう。

パッチを受け取る

Git ユーザー向けにミラーを作るのはとても素敵なことですが、 (あなたのプロジェクトがとにかく目にとまるものであれば) ゆくゆくは誰かから GitHub の pull リクエストを受け取ることになるでしょう。

hg-git では Git ユーザーからの貢献を扱うのも簡単です。 まず、貢献者のフォークをあなたのプロジェクトのパスに追加します:

[paths]
git = git+ssh://git@github.com/username/project.git
contributor = git+ssh://git@github.com/contributor_username/project.git

ここでも、 github.com の次の :/ (スラッシュ) へ置き換えるのを忘れないように!

次に、変更をあなたの Mercurial リポジトリへ pull します:

hg pull contributor

このとき、あなたのリポジトリがどうなったか(それで、マージが必要かどうか)確認するには、 graphlog が使えます。

必要であれば(で、そうしたければ)マージし、貢献者の変更をメインの Mercurial リポジトリと Git ミラーへ push します:

hg push
hg push git

ここでは基本を取り上げました! ブランチをたくさん作るワークフローをとっていれば、 事はもう少し複雑でしょう。それでも、この Tip は Git ユーザーからパッチを受け取る時にきっと役立つことでしょう。

あなたは Mercurial を選んだのだけれど、 Git が好きな人も多い。 彼らがあなたのプロジェクトに貢献しやすくしよう。