【问题标题】:Automating Hg notify config updates自动化 Hg 通知配置更新
【发布时间】:2013-02-07 18:42:45
【问题描述】:

通过 IIS 在 windows 框中托管 Mercurial。

我有一个根目录,我把所有的 repos 都放在这里

d:\repos
   - ProjectA
       - .hg
          - hgrc
   - ProjectB
       - .hg
          - hgrc
   - ProjectC
       - .hg
          - hgrc

所有 repos 的 hgrc 文件都设置了通知扩展:

config =d:\hg\Repositories\NotificationList.txt

这样我就有一个文件来管理所有通知收件人,就像 wiki 描述的那样: https://www.mercurial-scm.org/wiki/NotifyExtension

但是 wiki 提到通过它自己的存储库控制 NotificationList.txt 文件?我怎样才能做到这一点?如果我在 d:\repos\HgNotify 创建一个单独的 repo 并在其中包含 NotificationList.txt 文件,用户可以更改、提交和推送,但是当推送发生时,NotificationList.txt 不会在 hg 服务器上更新。

有没有办法以某种方式更新该文件?我是否缺少 Hg 服务器上的密钥设置?还是我需要使用 post-push 挂钩来部署该文件?

更新 1

我从 Tim 的回答中添加了详细信息,并且不断收到 HTTP 500: Server Error on the push。我终于弄清楚如何跟踪 python 调用 (python -m win32traceutil),这似乎是问题所在:

 File "C:\Python27\lib\site-packages\mercurial\util.py", line 402, in hgexecutable
 exe = findexe('hg') or os.path.basename(sys.argv[0]) AttributeError: 'module' object has no attribute 'argv'

好像找不到hg.exe。

更新 2

我安装了 TortoiseHg 并重新启动了系统。现在我得到: 表情:添加了 1 个变更集,对 1 个文件进行了 1 次更改 远程:通知:发送 1 个订阅者 1 个更改 远程:警告:changegroup.update 钩子以状态 1 退出

这让人认为它找到了 hg.exe,但它没有做它的工作,因为文件没有得到更新

更新 3

在这里找到我的解决方案:https://stackoverflow.com/a/8023594/698

我最终使用的命令行是:

 changegroup = cmd /c hg update

我还补充说: [用户界面] 调试=真

致我的 hgrc。这两者结合起来给了我更多有意义的信息。最后我看到“拒绝访问”。我给了用户完全权限,但我不确定为什么给 IUSR 完全权限不起作用。稍后我将不得不深入研究。

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    在包含您的通知列表的服务器存储库中,您需要添加一个更改组挂钩:

    [hooks]
    changegroup.update = hg update -C
    

    或者如果您想确保存储库始终是干净的:

    [extensions]
    purge =
    
    [hooks]
    changegroup.update = hg update -C && hg purge --all
    

    【讨论】:

    • 这是我推送时得到的结果:HTTP 错误:500(内部服务器错误)[命令返回代码 255 Thu Feb 07 13:02:53 2013]。我不知道在哪里可以找到更多详细信息。
    • 你只用 changegroup 钩子得到这个吗?如果是这样,请添加--traceback 选项:changegroup.update = hg --traceback update -C。这很可能是因为您正在使用 Web 服务器进行存储库 - 它可能没有进行更新的权限。我建议调查mercurial-server
    • 我添加了 changegroup.update = hg --traceback update -C 但没有看到更多细节。请参阅我关于找不到 hg.exe 的更新 1
    • 您的网络服务器可能以不同的用户身份运行 - 您是如何启动它的?只是hg serve?还是您使用的是 Apache 或其他网络服务器?
    • 使用此处的指令通过 IIS 作为 ISAPI 过滤器运行它:firegarden.com/software/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多