推送到两个无法互相访​​问的存储库

Sör*_*lau 6 mercurial dvcs push

设置:

  • 一台笔记本电脑L.
  • 办公室服务器托管各种存储库SOffice
  • 客户的数据库服务器SCustomer

我正在为客户编写L代码,并且经常想要将它同时推送到SOffice和SCustomer.

我知道我可以使用一个changegroup钩子从第二个存储库推送到第三个存储库(如本答案中所述),但这需要第二个可以达到第三个网络方式.

在我的情况下,每个都在防火墙后面,只有我的笔记本电脑通常通过VPN(或在物理上)访问.我可以在SOffice上建立VPN以获得SCustomer,但我不愿意.

有没有办法可以设置default两个存储库?

krt*_*tek 7

您不能default使用两个存储库,但可以在hgrc文件中定义多个存储库:

[paths]
default= /path/to/first/repo
scustomer = /path/to/second/repo
Run Code Online (Sandbox Code Playgroud)

然后,您可以scustomer显式地推送到存储库:

hg push scustomer
Run Code Online (Sandbox Code Playgroud)

如果你想要自动化同时推送到两个存储库的过程,我不知道有一个Mercurial方法可以做到这一点,但是很容易创建一个shell脚本,别名或其他东西来运行两个命令之后其他.

你甚至可以使用存储库上的一个钩子自动推送到另一个,但你必须区分"手动"推送和钩子中的自动推送,我想这将是非常混乱.


Nei*_*eil 5

您是否可以使用自动推送到两个外部存储库的挂钩创建存储库的第二个克隆?然后从您的工作克隆推送到第二个克隆.


Ry4*_*ase 3

有一个MultirepoExtension添加用于在多个存储库上执行任何操作的命令。

或者您可以创建一个别名来推送到两者,例如:

[aliases]
pushboth = !$HG push http://first ; $HG push http://second
Run Code Online (Sandbox Code Playgroud)

或者您可以创建一个预推钩子来推动另一个钩子。就像是:

[hooks]
pre-push = hg push http://second
Run Code Online (Sandbox Code Playgroud)

但我最喜欢(并赞成)krtek 的答案。只需给每个路径别名并使用短名称而不是 URL 运行推送两次即可。