自动化Hg通知配置更新

时间:2013-02-07 18:42:46

标签: mercurial

通过IIS在Windows框中托管Mercurial。

我有一个根目录,我放置了所有的回购

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服务器上的密钥设置吗?或者我是否需要使用推后挂钩来部署该文件?

更新1

我添加了Tim的答案中的详细信息,我一直在推送HTTP 500:服务器错误。我终于弄清楚如何跟踪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个文件      remote:notify:发送1个订户1个更改      remote:warning:changegroup.update hook退出状态为1

这样可以认为它已经找到了hg.exe,但它没有完成它的工作,因为该文件没有得到更新

更新3

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

我最终使用的命令行是:

 changegroup = cmd /c hg update

我还补充说: [UI] 调试=真

到我的hgrc。这两个组合给了我更多有意义的信息。最后我看到“拒绝访问”。我给了用户完全许可,但我不确定为什么给予IUSR完全许可不起作用。我以后需要深入研究的东西。

1 个答案:

答案 0 :(得分:1)

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

[hooks]
changegroup.update = hg update -C

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

[extensions]
purge =

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