从Mercurial中的单个本地存储库推送到多个远程存储库

时间:2011-06-03 04:44:28

标签: version-control mercurial bitbucket kiln appharbor

我正在考虑使用AppHarbor来托管一个轻量级网站,并正在调查他们的Mercurial集成。

目前我使用Kiln作为我的远程存储库,但目前AppHarbor仅支持BitBucket集成。

是否可以为单个本地存储库提供2个远程存储库?所以,当我从我的本地推送提交时,他们都会得到推动?

我不想从BitBucket中拉出来,只需推送它就可以被AppHarbor抓取并部署。

2 个答案:

答案 0 :(得分:42)

您可以在存储库配置文件的[paths]部分中设置多个远程存储库别名。这个文件在.hg / hgrc中,你可以添加这样的路径

[paths]
default = http://kilnhg.com/repo
bitbucket = http://bitbucket.org/repo

然后你会运行hg push bitbucket推送到bitbucket并hg push推送到窑,这也是默认值。别名default是您未指定任何其他内容时使用的别名。这种方式无需参数的推拉将使用您首选的远程主机,窑。

遗憾的是,您无法一次性hg push *类型命令推送到所有远程主机,您必须逐个指定每个推送目标。

答案 1 :(得分:2)

我不确定你是否可以在Bitbucket / Kiln上编辑hgrc文件。如果可以,您可以自动完成此操作。如果没有,你可以推送到另一个本地副本,然后使用Hooks将其推送到Bitbucket和Kiln。请参阅this answer by Ton(为方便起见,包含在下方):

  

在中央服务器中创建一个   changegroup hook。

     

所以你的中央服务器就有了   关注hgrc:

[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
     

你可以有多个钩子   同样的事件,所以不应该是一个   问题。的优点   changegroup挂钩变换集   钩子是它运行得少得多。