2

我们开始使用 Mercurial 进行源代码控制。我们已将 HGRC 配置文件配置为在推送到“中央”存储库后进行自动更新。对于某些 PC,我们会收到此错误消息:

warning: changegroup hook exited with status -1

HGRC 看起来像这样:

[ui] 
username=ADMIN
verbose=true

[hooks]
changegroup = hg update >&2

后来我们手动执行更新,一切正常。

4

2 回答 2

3

我有一个非常相似的问题。现在终于可以使用了:

更改组 = cmd /c hg 更新

加粗的 cmd /c 导致 cmd.exe 生成,它将按照我们的意愿执行 hg update,但现在 cmd.exe 的退出值将是 0。

更长的故事:

设置:win 2008 服务器。
mercurial 1.9.3
hgwebdir 通过普通 http,它是一个内部网络

错误:有趣的是,我的错误不是-1,而是
“警告:changegroup hook exited with status 1
无论如何,更新没有执行。

我发现我可以将钩子放入 .hgrc 或 hgweb.config 中,问题在这里或那里都是一样的。我终于把它放到了 hgweb.config 中,如下所示,所以所有的存储库都是自动提交的,这比一直有这个松散​​的分支要好得多。我想要自动提交的主要原因是 vcs & build 服务器上的存储库现在拥有最新版本,这使得管理任务通常更简单。

[网络]
push_ssl = False allow_push = *

[集合]
c:\Dev\Reps = c:\Dev\Reps

[ui]
调试=真

[挂钩]
更改组 = cmd /c hg 更新

于 2011-11-05T22:01:37.900 回答
2

它可能与实际执行 hook的用户有关,这可能不是具有正确权限的用户。

您有管理 Mercurial 存储库的 IIS 网络服务器吗?

(来自线程:)

根据 Mercurial/IIS 的经验,我建议尝试:

  • (a) 运行一个简单的非 HG 命令有效吗?权限cmd.exe会影响进程外 python 钩子。
  • (b) 像 ' ' 这样的简单钩子有用python -c "import sys; sys.exit(0)"吗?
  • (c) 如果你做到了这一点,你能否确认该进程正在以你认为它正在运行的用户身份运行,并带有一个执行以下操作的钩子:
import win32api
username = win32api.GetUserName()
(write username to a file so you can read it)
于 2010-05-21T20:29:41.533 回答