创建 Git 镜像

作者:Steve Losh
日期:2009-11-09

你选择了 Mercurial,但还是有很多人更喜欢 git 。让他们在对你的项目作出贡献时更方便些。

在所有的像 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” 按钮来创建一个代码库。

一但你创建了一个新库,你将会看到一个与下面类似的页面:

../../_images/github.jpg

看到那个 git@github.com:username/project.git 的 URL 没?记住它,因为你在 push 你的镜像时你将会用到它。

Push 你的项目

现在你已经装好了 hg-git 并且为你的项目在 GitHub 上创建好了一个代码库,你还需要将你的 Mercurial 库 push 到 GitHub 上去。首先,通过编辑你项目里的 .hg/hgrc 来将 git 的 URL 添加到你的 Mercurial 代码库里去:

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

Note

重要注意事项: 你需要把 github.com 后面的 : 替换为一个 / (正斜杠)。这是必须的,因为 Mercruial 就是这样来操作代码库的路径的!

当然,你还需要将 usernameproject 替换为适当的值。

现在你仅需要向 git 路径 push 以创建你的镜像了:

hg push git

这将会耗费一些时间,尤其当你的代码库比较大时。一但它结束了的话你便在 http://github.com/username/project/ 上拥有了一个能100%正常运转的 git 镜像了。 Git 用户便能够通过运行 git clone git://github.com/username/project.git 来克隆你的项目了并且可能连你使用的是 Mercurial 都不会意识到。

接受贡献

创建了一个镜像以提供给 git 用户克隆干的非常漂亮了,但最终总会有人在 GitHub 上向你发送 pull 请求的(如果你的项目很吸引人的话)。

hg-git 简单的解决了来自 git 用户的贡献。首先,添加贡献者的 fork 到你的项目路径:

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

Note

再次, 确认你将 github.com 后面的 : 替换为了 / (正斜杠)!

接下来 pull 他们的变更到你的 Mercurial 代码库中:

hg pull contributor

你可以使用 graphlog 来观察你的代码库在这时看起来是怎么样一个状况(还有是否需要合并)。

假如你需要(或是想)合并的话,合并然后将他们的贡献 push 到你的 Mercurial 主库和你的 git 镜像上去:

hg push
hg push git

这里包含了所有的基础!如果你拥有一个大量分支的工作流的话事情可能会变得复杂,不过至少这个贴士在你接受来自 git 用户的 patch 时会帮到你。