允许在没有-f的情况下推动多个头

时间:2012-02-24 08:57:13

标签: mercurial

对于我们的项目,我们有两个存储库:主要和自动测试。在测试库中,我们允许多个头,因此在推送到测试库时常用“hg push -f”。但是使用“push -f”是一个坏习惯,因为人们可能会意外地将其用于其他存储库。

所以我正在寻找一些配置选项,最好是在存储库端,它允许在不使用-f的情况下推送多个头 - Mercurial是否提供了这样的选项?

(我知道我可以在存储库中安装一个钩子,以防止它成为强制推送的目标,但我想摆脱使用-f的需要。)

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案(不幸的是每个客户端需要)是在~/.hgrc中设置别名,如下所示:

[alias]
testboardpush = push -f ssh://example.com/testboard

然后,您可以使用hg testboardpush将提交推送到自动化测试存储库,而不是陷入使用push -f的错误习惯。

如果您有多个包含多个测试板位置的存储库,您可以在~/.hgrc文件中设置别名,如下所示:

[alias]
testboardpush = push -f testboard

然后对于每个HG存储库的.hg/hgrc文件,请输入以下行:

[paths]
testboard = ssh://example.com/testboard

使用此设置,键入hg testboardpush将始终推送到您当前正在使用的特定HG存储库的正确位置(如果尚未设置路径,则会失败并显示错误)。

不幸的是,如果没有自定义版本的HG,您似乎无法从服务器端执行此操作;特别是,我对localrepo.py file of the HG sources中的push实现的读取表明它无条件地使用discovery.checkheads(和中止)检查新头,除非设置了force参数。