这与这个问题有些相关,但是是一个不同的问题。
我们有一个中央的Hg仓库,通过SSH和mercurial-server服务于用户。 我们有一些Mac,Linux和Windows客户端连接到它。
它已经发生了两次,其中一个Windows用户已经损坏了他们的仓库,然后被推回到中央的仓库,从而破坏了仓库。 我想在中央资源库上写入一个传入的钩子脚本,以防止事务被接受,如果它会损坏中央回购。
虽然不幸的是我不太了解Mercurial写这样一个剧本。 有人碰到过这种可能性吗? 就个人而言,我不太清楚为什么hg默认不这样做。
最近版本的Mercurial(自1.5以来)支持传入数据的validation。 加
[server] validate = True
到您的服务器的hgconfiguration(无论.hg/hgrc或hgwebdirconfiguration应该工作正常),让服务器validation传入的数据,并拒绝无效推送。 客户端将看到类似于以下的错误:
remote: abort: missing file data for beta:dddc47b3ba30e54484720ce0f4f768a0f4b6efb9 - run hg verify
希望有所帮助!
也许你应该避免完全推到仓库。 有了Mercurial及其分布式的性质,每个人都可以拥有自己的分支,当他们觉得自己准备好了时,他们会告诉你,然后你就从他们身上拉开。 没有提交访问的问题,没有推动,将打破东西…
当我从SVN迁移到Mercurial时,这至less是我朋友给我的一个build议。
我不知道,如果这是你的select,但是为每个人build立一个个人存储库,然后从你需要的人那里拉出来,可能需要的工作量less,而不是试图赶上危险的推动力。
难道你不能像David Herron的博客那样做同样的事情,而不是在prerouting上做,而是在中央repo的precommit钩子上做?
一个可能的select是:
这个解决scheme并不是你所要求的,但至less,你有一种方法来回滚你的仓库,以防止损坏。