Ry4*_*ase 21
$ cat .hg/hgrc
[hooks]
pretxncommit.whitespace = hg export tip | (! egrep -q '^\+.*[ \t]$')
$ echo 'a ' > a
$ hg commit -A -m 'test with trailing whitespace'
adding a
transaction abort!
rollback completed
abort: pretxncommit.whitespace hook exited with status 1
$ echo 'a' > a
$ hg commit -A -m 'drop trailing whitespace and try again'
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我们引入了一个简单的pretxncommit钩子来检查尾随空格.这个钩子很短,但不是很有帮助.如果更改将带有尾随空格的行添加到任何文件,但它不会打印任何可能有助于我们识别有问题的文件或行的信息,则会以错误状态退出.它还具有不注意未修改线条的好处; 只有引入新尾随空格的行才会导致问题.
只需将正则表达式更改为'^\+.*[ \t]$'
您要查找的任何字符串.
Ry4an的答案几乎是正确的:)但你需要用"hg diff"替换"hg export tip".
tip是最后提交的变更集,但对本地未经修改的变更感兴趣 - 所以diff是你需要的.为了我的需要,我将以下内容添加到我的hgrc中
precommit.removeDebug = hg diff -S | grep -v '^-' | (! egrep '(var_dump)|(exit)|(print_r)')
Run Code Online (Sandbox Code Playgroud)
-S包括subrepos(maye不需要,可能还有bug).
grep -v'^ - '从diff中删除指示已删除行的行.我删除了-q,所以我至少有一个想法删除的内容,但不幸的是这种方法无法打印您的发生的文件和行号(因为它是管道).也许某人有更好的方法来做到这一点.
顺便说一句,在Windows上你可以使用
[hooks]
pretxncommit.nocommit = hg export tip | findstr NOCOMMIT && EXIT /B 1 || EXIT /B 0
Run Code Online (Sandbox Code Playgroud)
如果源包含字符串"NOCOMMIT",则此挂钩将失败
归档时间: |
|
查看次数: |
10381 次 |
最近记录: |