获取更改组中的更改集列表(mercurial python hook)

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

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

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

最佳答案 你想要一个pretxnchangegroup钩子是正确的,但是你不想检查所有新版本 – 因为人们会修复你在后续更改集中拒绝的错误,但是如果你检查所有的更改集,他们的工作永远不会被接受!

相反,要么只检查所有头文件中的所有文件,要么使用hg status –rev x:y语法来获取已有修订版本和您收到的修订版本之间已更改文件的列表,并仅检查那些文件文件只在最新修订版中.

如果你真的想要所有版本的列表,你可以在版本1.6中使用revset(hg help revsets)新版本,但是你真的只想检查结果,而不是所有的修订版本.

点赞