4

我想编写一个脚本来检查推送到 mercurial 服务器的传入变更集,如果变更集不符合特定标准,则拒绝推送。看来我的选择是prechangegroup,pre-changegrouppretxnchangegrouphooks 。不幸的是,prechangegroupandpre-changegroup钩子似乎无法访问传入的变更集,所以我需要pretxnchangegroup. 但是根据http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html#sec:hook:pretxnchangegroup上的文档,这可能导致使用存储库的人的状态不一致,而钩子正在执行:

“当这个钩子运行时,如果其他 Mercurial 进程访问这个存储库,他们将能够看到几乎添加的变更集,就好像它们是永久的一样。如果你不采取措施避免它们,这可能会导致竞争条件。”

如果有人在我的脚本正在拒绝变更集的过程中进行拉动,我真的不会对随机发生的怪异事件感到疯狂。我可以使用另一个钩子吗?如果没有,我需要采取哪些“避免它们的步骤”?有没有办法在我的钩子期间锁定存储库?

4

1 回答 1

4

如果您扩展引用段落的评论,Meister Geisler证实了一些用户的观察,即自 hg 1.2 以来该问题已得到解决,因此尚未永久传入的变更集不可见,因此不会被拉取。

于 2011-02-11T03:44:17.510 回答