hg作为Windows服务

我想在Windows服务器上使用mercurial。 因为我想通过http来拉和推, hg serve似乎是最简单的解决scheme。 它工作正常,但我已经重新启动后,每次重新启动,所以我需要它作为一个Windows服务。 用sc create ...手动安装它sc create ...没有工作,它创build了一个服务,当我尝试启动它时会引发错误。 我发现这个问题的一些参考

  • https://bitbucket.org/tortoisehg/stable/issue/1245/configure-hg-serve-to-run-as-a-windows-service-from
  • https://bitbucket.org/andrearicossa/hgservice

但是如果有的话,他们的logging很差。 (当然,我可以安装一个web服务器并使用hgweb,但似乎更复杂。)您是否有任何经验,如何轻松地设置hg serve ... <many args>作为一个Windows服务?

更新:感谢不同的方法。 我们住在hg serve ,我们公司的windows-guy设法把它作为一个不太合适的服务来安装。

你应该看看杰里米·斯金纳(Jerremy Skinner)关于这个问题的博客帖子 。 他解释了如何在IIS7上托管Mercurial存储库,并使用一些不错的URL路由。 我在我的机器上做了它,它像一个魅力。 这需要一些配置,但它是值得的。

在他的文章中我发现1错误是他正在写一个hgwebdir.cgi ,但是我找不到那个。 我找到了一个hgweb.cgi ,所以复制粘贴这个文件。

或者你可以使用SCM-Manager

使用诸如apache / lighttpd / iis之类的web服务器可以提供许多功能,如身份验证或HTTPS支持。 但“服务”是一个简单而快速的解决方案。 而且,“hg serve”可以服务多个存储库。 但是,hg serve本身不能作为Windows服务运行,因为它不能响应Windows的控制命令。 所以使用HgService是一个很好的解决方案,使'hg服务'一个真正的Windows服务。

这是我的配置的一个例子。 我遵循以下步骤:

  • 安装TortoiseHG
  • 安装HgService
  • 创建“C:\ Repositories”文件夹,并将需要的回购。
  • 使用以下内容创建“C:\ Repositories \ hgweb.config”:
 [paths] / = C:\Repositories\* [web] style = monoblue 
  • 修改C:\ Program Files \ Mercurial \ HgService中的HgService.exe.config
 <add key="CommandLine" value="hg.exe"/> <add key="CommandLineArguments" value="serve --prefix=/hg --address 0.0.0.0 --port 80 --web-conf c:\Repositories\hgweb.config -A access.log -E error.log" /> 
  • 开始服务

希望这一系列的行动也会对你有所帮助。

基于Apache的替代方案: HgServe – 适用于Windows的Mercurial Repository server

hg的服务与NSSM工作正常!