【问题标题】:Mercurial hook: isn't recompiled after change?Mercurial hook:更改后不重新编译吗?
【发布时间】:2013-11-28 17:32:37
【问题描述】:

好的,这真的很奇怪。我有一个旧的 Mercurial 2.02。在旧的 Ubuntu 上使用 python 2.6(我认为是 10.4)。 我们是一家橱窗店,不定期推送,所以我想要一种评论服务。它绝对适用于 windows.. pretxnchangegroup 引用驱动器上的 python 文件,有效..

但我在新的 Mercurial 2.7 上创建 Mercurial 挂钩时犯了错误,但随后发现内部 API 已更改,因此我返回并修复它,或尝试修复。我使用的是windows,但需要将hook部署到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 内部错误。

我现在真的很迷茫和绝望,因为这些东西很快就会起作用,而我现在正用头撞墙..

【问题讨论】:

  • 只是一个评论。在本地工作但在服务器上很奇怪??也许需要重新启动服务器??
  • 本地 = 不同的 python,不同的 Mercurial,不同的操作系统;不同的一切。即使重新启动很容易,我也很难相信这是操作系统中的任何东西暂时搞砸的问题,尤其是。在 Linux 上(在 Windows 上会是另一回事..)。

标签: python mercurial mercurial-hook


【解决方案1】:

我不知道到底发生了什么,但它似乎没有使用脚本,因为异常以某种方式禁止它编译为 pyc,而 Mercurial 不知何故获取了该 pyc 文件的旧版本。不太确定,但这是我最好的猜测(因为不知何故,似乎没有其他人有想法,而且 Mercurial 的人明确表示他们只回答邮件列表中的内容,而不是 SO.. 多么.. 好)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    相关资源
    最近更新 更多