将Bitbucket上的HG项目镜像到Github

56

有没有一种高效的工作流程将主要托管在Bitbucket上的使用Hg的项目镜像到GitHub上?


请参见https://dev59.com/X3NA5IYBdhLWcg3wpfiu。 - wimh
7个回答

39

你可以使用像hg-git这样的工具:

  • 在你拥有推送权限的某个地方设置一个Git仓库,
  • 然后在你的项目内运行hg push [path]。例如:
$ cd hg-git # (a Mercurial repository)
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created
$ hg push git+ssh://git@github.com/schacon/hg-git.git
$ hg push

这将把我们所有的Mercurial数据转换为Git对象并推送到Git服务器。
您还可以将该路径放入.hg/hgrc[paths]部分,然后按名称推送它。

hg-git


谢谢。我确实简单地看了一下hg-git,但我发现它仍处于alpha状态。我尝试在cygwin中安装它,但目前我遇到了一些稳定性问题。不过,如果这个工具能够正常工作,它绝对是工作流程中非常有用的工具。 - Santa

13
如果您在项目中使用Mercurial,您可以快速轻松地创建一个git的项目镜像,以便于git用户能够做出贡献。我写了一篇关于如何使用hg-git在GitHub上管理Mercurial镜像的教程。它涵盖了如何使用GitHub账户开始,如何将Mercurial项目推送到GitHub,以及如何从GitHub接受贡献(拉取请求)。以下是博客文章链接:http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/ 存档链接:http://web.archive.org/web/20100811223113/http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/。请注意,html标签已被保留。

5
上述提及的网站似乎已经无法访问。 - mennanov

12

'git-remote-hg'是Git项目的半官方Mercurial桥接工具,一旦安装成功,它允许你像处理Git仓库那样地克隆、获取和推送到Mercurial仓库:

git-remote-hg添加到您的bin路径中,然后您可以像在Github上所述的那样进行镜像

git clone --mirror  hg::https://bitbucket_repo

然后,进入您克隆的存储库

git remote set-url --push origin https://github.com/exampleuser/mirrored

最后,同步你的镜像

git fetch -p origin
git push --mirror

1
这比接受的答案好多了,因为结果将是一个真正的镜像,包括所有的标签和分支。 - Kentzo
检查您的操作系统仓库,例如 Fedora 包是否可用:dnf install -y git-remote-hg - Alec Istomin

6
截至2013年7月,有一个名为BitSyncHub的网络服务可以通过BitBucket post-receive钩子自动化此过程。但是您需要授予该服务对GitHub存储库的写入权限(将bitsynchub添加为贡献者)。

3

我是从2019年2月开始报道的。我刚遇到这个问题,按照@vonc建议使用hg-git,并填补了一些缺失的步骤使其正常工作。在这里,我将提供更详细的指南:

  1. 通过在某个地方克隆其存储库来安装hg-git,并使您的~/.hgrc文件中的“扩展”部分看起来像这样:
[extensions]
hggit = [path-to]/hg-git/hggit

我在源代码库中找到了最新的安装说明:https://bitbucket.org/durin42/hg-git。所以请留意。

  1. 如果没有安装,安装dulwichpip install dulwich

  2. 在GitHub上创建一个新的空仓库,例如https://github.com/user/git-mirror

  3. 克隆hg源代码库,并将其推送到git镜像:

$ hg clone https://bitbucket.org/user/hg-source
$ cd hg-source
$ hg push git+ssh://git@github.com/user/git-mirror.git

1

0
您可以使用 Git-hg Mirror 服务 来进行此操作(包括将 GitHub 存储库镜像到 Bitbucket,或者进行双向同步)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接