好的,这真的很奇怪。我有一个旧的Mercurial 2.02。用旧的Ubuntu上的python 2.6(我认为10.4)。 我们是一家门店,经常推送,所以我想要一种评论服务。它完全适用于windows .. pretxnchangegroup引用驱动器上的python文件,工作..
但是我错误地在一个新的Mercurial 2.7上创建了Mercurial钩子,但后来认识到内部API发生了变化,所以我回过头来修复它,或者尝试了。我正在使用Windows,但需要将钩子部署到Linux,因此我使用WinSCP将py文件复制到我的主目录。然后sudo cp到python 2.6发行文件夹,其他钩文件就在这里。
我通过linux盒子上的模块模式调用钩子:
pretxnchangegroup.pushtest = python:mycompanyname.testcommit.exportpatches
在文件夹“mycompanyname”中是文件testcommit.py,该函数名为exportpatches。它在本地工作没有问题。
奇怪的是:它曾经工作过一次,有点不稳定:有时它只是说没有定义函数“mycompanyname.testcommit.exportpatches”。有时它只是使用旧版本的钩子(我看到它,因为它给出了一个旧的异常消息而不是新的异常消息)。我不知道如何在python中获取异常消息,所以我迷失在那里..
第二个奇怪的事情:这些钩子文件也有一个.pyc版本,可能已编译,但我的钩子没有得到这样的处理。那是自动编译吗?如果我尝试使用目录方法指向文件,我会在推送时遇到直接的500内部错误。
我现在真的很失落和绝望,因为这些东西很快就要工作了,我现在正撞在墙上......
答案 0 :(得分:0)
我不确切知道发生了什么,但是因为它没有使用脚本,因为异常以某种方式禁止它编译为pyc,并且Mercurial以某种方式获取了该pyc文件的旧版本。不太确定,但这是我最好的猜测(因为似乎没有人似乎有任何想法,Mercurial的人明确表示他们只会在他们的邮件列表上回答东西而不是SO ..如何......很好)。