Source

hgtip-content-ja / advanced / 2009-11-09-create-a-git-mirror.html

Full commit
{% extends "_tip.html" %}
{%hyde
    title: Git ミラーを作る
    author_name: Steve Losh
    author_link: http://stevelosh.com/
    created: 2009-11-09
%}


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


{% block tip %}

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

### hg-git のインストール

まず、 [hg-git](http://hg-git.github.com/) プラグインをダウンロードする必要があります:

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

ダウンロードしたら、次の行を [`~/.hgrc` ファイルへ追加しましょう]({{ links.tip_edit_hgrc }}):

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

### GitHub のアカウントを作る

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

### GitHub にリポジトリを作る

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

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

<div class="screenshot">
    <a href="http://www.flickr.com/photos/sjl7678/4091674740/" title="GitHub New Repo Sample by Steve Losh, on Flickr"><img src="http://farm3.static.flickr.com/2580/4091674740_f6d488f9a5.jpg" width="432" height="500" alt="GitHub New Repo Sample" /></a>
</div>

`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 に合わせるためです!

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

さぁ、後は `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](/tips/beginner/2009-10-03-stay-sane-with-graphlog/)
が使えます。

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

    hg push
    hg push git

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

{% endblock %}