对于我们的项目,我们有两个存储库:主要和自动测试。在测试库中,我们允许多个头,因此在推送到测试库时常用“hg push -f”。但是使用“push -f”是一个坏习惯,因为人们可能会意外地将其用于其他存储库。
所以我正在寻找一些配置选项,最好是在存储库端,它允许在不使用-f的情况下推送多个头 - Mercurial是否提供了这样的选项?
(我知道我可以在存储库中安装一个钩子,以防止它成为强制推送的目标,但我想摆脱使用-f的需要。)
答案 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
参数。