【发布时间】: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