2011-10-04 29 views
3

我在我的本地mercurial存储库中有一些pretxncommit挂钩,这些挂钩用于检查提交消息是否包含对票据的引用以及其他一些完整性检查。如何禁用与mercurial队列或histedit pretxncommit挂钩?

我的问题是,当我尝试使用mercurial队列时,像qnew这样的命令试图运行这些钩子,并且其中一个检票检查失败,我看到了与histedit以及类似扩展相同的问题。

为什么使用这些命令执行pretxncommit挂钩?他们是否运行某种内部提交?

如何让这些钩子只在提交时运行?

回答

2

是的,QNEW创建真正提交,因此调用所有相关承诺挂钩。您可以通过在应用MQ修补程序并查看日志时暂时禁用MQ来自行确认。

有没有办法让pretxncommit钩只适用于某些命令,除了由陪审团串通的东西与其他挂钩:

$ cat .hg/hgrc 
[hooks] 
pre-qnew = touch .hg/skiphook 
post-qnew = rm .hg/skiphook 
pretxncommit = test -e .hg/skiphook || echo not skipping 
$ hg rm README # make some change 
$ hg qnew asdf # no hook 
$ hg qpop 
$ hg rm README 
$ hg ci -m asdf 
not skipping 

这里我们pretxncommit钩确保特定的文件不存在运行前它的(简单的)钩子,以及前/后的qnew钩子创建文件并清理它。

+0

我不认为这个解决方案有意义,它的一种破解。另一方面,你会认为你可以解决这个问题: pre-commit = do-your-hook pre-qfinish = do-your-hook 但是pre-qfinish似乎没有阻止qfinish: - \ – stantonk

0
  • 如果你想忽略MQ-操作pretxncommit与内回购
  • 所有变化(可记录)的作品,你可以看看的变更父母,看看如果是这样的qparent/qbase标签的后裔 或在WC看到。水木清华。像(从头脏,而不是从测试)hg id -tr。

或者(也许deli妄) - 当你使用MQ时,你总是使用qtip,不是吗?

>hg parents 
... 
tag:   qtip 
tag:   tip 
.. 
+0

提到你的意思是在钩过问检查,如果他们正在运行的MQ-操作,如果是这样,放弃他们? –

+0

是的,但不是中止,但退出时具有良好的错误级别。顺便说一句,发现晚于回答-qfinish即使在这种情况下也会很头疼 –