我想要一个 mercurial 钩子(Hook),它将在所有修改的文件上运行 JSLint/PyChecker/etc。但是,我无法控制所有 hg 客户端,并且希望它在推送到主存储库(我可以控制)时运行,因此主存储库上的 pretxnchangegroup Hook 似乎是最好的。

如何获取将要提交的变更组中所有变更集的列表?

我似乎还有其他使用预提交钩子(Hook)的解决方案,但这些对我来说不起作用,因为客户端可能已经提交了失败的 JSLint。在这种情况下,他们应该能够修复新提交中的错误,并且能够成功地将(错误的和新的提交)推送到服务器。服务器只需要检查每个分支上的最新变更集,以及在变更组中修改的每个文件。

最佳答案

你是对的,你想要一个 pretxnchangegroup 钩子(Hook),但你不想检查所有的新修订——因为人们会修复你在后续变更集中拒绝的错误,但如果你检查所有变更集,他们的工作将永远不会被接受!

相反,要么只检查所有 head 中的所有文件,要么使用 hg status --rev x:y 语法获取您已经拥有的修订版和您正在接收的最新修订版之间更改的文件的列表,并仅检查最新修订版中的那些文件。

如果您真的想要所有修订的列表,您可以使用 1.6 版中新增的 revset ( hg help revsets ),但您真的只想检查结果,而不是让您到达那里的所有修订。

关于python - 获取变更组中的变更集列表(mercurial python hook),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3621463/

10-11 15:24