Help us understand the problem. What is going on with this article?

GitHubをMercurialで使う

More than 5 years have passed since last update.

Mercurialのhg-gitエクステンションを使うと、GitHub上のリポジトリをMercurialのリポジトリに変換して使うことができる。

準備

Mercurialのhg-gitエクステンションをインストール

hg clone https://bitbucket.org/durin42/hg-git
cd hg-git
sudo python setup.py install

~/.hgrc にプラグインを追加

[extensions]
hggit = /Library/Python/2.7/site-packages/hg_git-0.4.0-py2.7.egg/hggit

Mercurialのユーザー名とメールアドレスの関連づけ

hg-gitをデフォルトの状態で使うと、GitHubにはauthorのメールアドレスが none@none で送信されるため、GitHub上でauthorが invalid-email-address と表示されてしまう。

GitHubのユーザー名が正しく表示されるよう設定を行う。

[git]
authors = .hg/authors.txt
hg/authors.txt
somebody = foobar@example.com

※メールアドレスはGitHubのアカウントに登録されているものであること。

利用

GitHubリポジトリのclone

hg clone でgitリポジトリをcloneしてMercurialのリポジトリに変換できる。

なお、Mercurial 2.5.1とhg-git 0.4.0の環境では、空のgitリポジトリをcloneすることはできなかった。

# sshの場合
hg clone git+ssh://git@github.com:user/repository.git
# httpsの場合
hg clone git+https://github.com/user/repository.git

GitHubリポジトリへのpush

hg push

既存のMercurialリポジトリをGitHubにpush

リポジトリの .hg/hgrc でGitHubのリポジトリURLを設定してから hg push を実行する。

[paths]
default = git+ssh://git@github.com:user/repository.git

gitブランチの扱い

gitリポジトリのブランチはMercurialリポジトリではbookmarkに変換される。Mercurialリポジトリでbookmarkを作ってpushすると、gitリポジトリでブランチが作成される。

ローカルのgitリポジトリの所在

hg-gitでpull/pushを行っているMercurialリポジトリには、変換作業用のgitリポジトリ .hg/hgrc/git が存在する。

参考

g_maeda
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away