我们正在研究添加预提交挂钩,以检测是否符合我们公司政策的编码标准。我们不想检测到遗留代码,只需添加新行即可。
在git中,可以检测在提交之前添加的行号,因为调用git blame时这些行号显示为哈希数00000000000。
在汞中,新行未在hg责备/注释中显示。还有另一种机制可以弄清楚这一点吗?使用hg diff确实很痛苦。
答案 0 :(得分:4)
编辑您的存储库(hg config --local
)或用户配置(hg config --edit
)并启用预提交挂钩(hg help config.hooks
):
[hooks]
pre-commit=/path/to/check-added-lines
在预提交挂钩中,使用wdir()
revset和modified() + added()
文件集运行以下版本的注释命令:(hg help revsets
和hg help filesets
):< / p>
hg ann -r 'wdir()' 'set:modified() + added()'
这将为您提供批注输出,其中刚添加的行(即仅存在于您的工作目录中的行)在修订号后带有+
。因此,在check-added-lines
中,您可以执行类似的操作
#!/bin/bash
IFS=$'\n'
for line in $(hg ann -r 'wdir()' 'set:modified() + added()' | grep '^[0-9]*+' | sed 's/^[0-9]\++ *: //'); do
if ! run_checker "$line"; then
exit 1
fi
done
exit 0
选择run_checker
程序。
尽管我会毫不犹豫地建议这样做,但是如果您愿意容忍错误和潜在的API损坏(Mercurial认为未明确记录其行为为实验性,其CLI和其stdout为API,我们会尽量保持这种稳定性) ),您可能还对新的实验性扩展程序扩展感兴趣,我认为该扩展程序是根据您的用例(hg help --extension fix
)构建的。