Mercurial 推送到两个可以';我们彼此联系不上
设置:Mercurial 推送到两个可以';我们彼此联系不上,mercurial,push,dvcs,Mercurial,Push,Dvcs,设置: 笔记本电脑 托管各种存储库软件的office服务器 客户的数据库服务器SCustomer 我正在为一位客户在L上编写代码,并经常希望将其推送到沙发和沙发上 我知道我可以使用changegrouphook从第二个存储库推送到第三个存储库(如上所述),但这要求第二个存储库可以通过网络到达第三个存储库 在我的例子中,每台电脑都在防火墙后面,只有我的笔记本电脑通常通过VPN(或通过物理方式)访问这两台电脑。我可以在沙发上设置VPN以到达斯库斯托默,但我不愿意 有没有一种方法可以,比如说,将默
- 笔记本电脑
- 托管各种存储库软件的office服务器
- 客户的数据库服务器SCustomer
changegroup
hook从第二个存储库推送到第三个存储库(如上所述),但这要求第二个存储库可以通过网络到达第三个存储库
在我的例子中,每台电脑都在防火墙后面,只有我的笔记本电脑通常通过VPN(或通过物理方式)访问这两台电脑。我可以在沙发上设置VPN以到达斯库斯托默,但我不愿意
有没有一种方法可以,比如说,将
默认值设置为两个存储库?您是否可以使用一个钩子创建存储库的第二个克隆,该钩子可以自动推送到两个外部存储库?然后从工作克隆推送到第二个克隆。您不能将默认值
推送到两个存储库,但可以在hgrc
文件中定义多个存储库:
[paths]
default= /path/to/first/repo
scustomer = /path/to/second/repo
然后,您可以直接推送到scustomer
存储库:
hg push scustomer
如果您想同时自动推送到这两个存储库,我不知道有什么Mercurial方法可以做到这一点,但是创建一个shell脚本、别名或其他东西来逐个运行这两个命令确实很容易
您甚至可以使用存储库上的钩子自动推送到另一个存储库,但您必须区分“手动”推送和钩子中的自动推送,我认为这将非常混乱。有一个添加了用于在多个存储库上执行任何操作的命令
或者,您可以创建一个别名,将其推送到两个位置,如:
[aliases]
pushboth = !$HG push http://first ; $HG push http://second
或者你可以创建一个预推钩子来推另一个钩子。比如:
[hooks]
pre-push = hg push http://second
但我最喜欢(并且投票支持)krtek的答案。只需给每个对象一个路径别名,并使用短名称而不是URL运行两次push。钩子不会创建某种无限循环吗?钩子不是被第二次推触发的吗?顺便说一句,谢谢你的扩展,我没有意识到。是的,你需要进行测试,以确保它只在“推到第一”时触发。我将坚持运行推送两次,而不是尝试将其自动化。在您的工作流程中加入这样的小捷径只会让您在没有捷径的系统中感到恼火,并在它们产生您没有预料到的副作用时感到困惑。扩展以及pushtweat命令别名可能带来了一个问题,即它们无法从TorgoiseHg Workbench轻松/直接控制;我很好,但我也在为非开发人员寻找一个相对方便的解决方案。不过,这些都是最接近的。我应该澄清一下,我知道我可以在hgrc
中设置多个推送位置。然后你应该看看@Ry4an提供的扩展,它似乎正是你想要的。