【发布时间】:2026-01-29 03:50:01
【问题描述】:
如果某个条件成立,我正在尝试禁止推送到 Mercurial 存储库。但是,如果用户使用push --force,则基本无论如何都会进行推送。
我知道在执行推送的机器上使用pre-push 钩子很容易做到这一点,该钩子将命令行参数传递给钩子。然而,由于钩子没有被传播,我不得不以某种方式将钩子分发给存储库的每个用户,并依赖他们不要弄乱它。
因此,我认为要走的路是在存储库服务器上设置一个prechangegroup 钩子,它检查条件并在必要时中止推送,但我无法找到获取命令行参数的方法用户从这个钩子推送时使用。有没有办法仅通过在存储库服务器上使用挂钩来完成此操作?
我知道一个可能的解决方法是使用pretxnchangegroup 挂钩,如果最新变更集的提交消息遵循某种模式,则允许推送。但是,从存储库用户的角度来看,--force 选项似乎要容易得多,因为它不会强迫他们潜在地进行虚拟提交以获取正确的消息。
【问题讨论】: