我想编写一个脚本来检查推送到 mercurial 服务器的传入变更集,如果变更集不符合特定标准,则拒绝推送。看来我的选择是prechangegroup
,pre-changegroup
和pretxnchangegroup
hooks 。不幸的是,prechangegroup
andpre-changegroup
钩子似乎无法访问传入的变更集,所以我需要pretxnchangegroup
. 但是根据http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html#sec:hook:pretxnchangegroup上的文档,这可能导致使用存储库的人的状态不一致,而钩子正在执行:
“当这个钩子运行时,如果其他 Mercurial 进程访问这个存储库,他们将能够看到几乎添加的变更集,就好像它们是永久的一样。如果你不采取措施避免它们,这可能会导致竞争条件。”
如果有人在我的脚本正在拒绝变更集的过程中进行拉动,我真的不会对随机发生的怪异事件感到疯狂。我可以使用另一个钩子吗?如果没有,我需要采取哪些“避免它们的步骤”?有没有办法在我的钩子期间锁定存储库?