我一直在寻找关于如何让hgwebdir在IIS上工作的体面指导,但我没有找到太多值得的。
Mercurial wiki上有this "step by step",但它并不是很好。 还有this和this,但是再一次,我找不到很好的步骤来引导它们开始的地方。
答案 0 :(得分:49)
我昨天只需要安装一个新的Mercurial实例,这里有1.7的更新说明:
hg clone https://www.mercurial-scm.org/repo/hg/
创建一个将成为您的Web应用程序文件夹的文件夹。您需要将三件事复制到此文件夹中:
您需要确保在IIS中设置了Python。
您还需要创建一个名为“hgweb.config”的文件,其内容类似于以下内容。文件中的路径必须是驱动器上要存储Mercurial存储库的位置:
[集合]
c:\ Mercurial \ repos = c:\ Mercurial \ repos
编辑hgweb.cgi文件,并将设置hgweb.config路径的行更改为以下内容(hgweb.config文件所在的位置):
config =“C:\ Mercurial \ hgweb.config”
另外,请查看Jeremy Skinners blog post。它有点过时,但有一些额外的好步骤,比如为更干净的URL设置URL重写。
答案 1 :(得分:34)
自从Mercurial 1.5.2发布以来,这些教程似乎并不完全正确。首先,hgwebdir.cgi已被删除,现在已替换为hgweb.cgi。
最适合我的说明是eworldui.net:
这些说明适用于IIS 7或更高版本。如果你在IIS 6上设置它,我写了类似的指令面向Win2k3和IIS 6.0:
http://partialclass.blogspot.com/2010/05/setting-up-mercurial-server-on-win2k3.html
更新:在完成这项工作后不久,我了解到BitBucket改变了定价方案,提供免费,无限制的私人托管:https://bitbucket.org/。当我最初在这个项目上工作时,我会在心跳中选择这个。
答案 2 :(得分:12)
答案 3 :(得分:11)
答案 4 :(得分:11)
以下是我在IIS6上对hgwebdir.cgi设置进行大量研究后所做的工作。它基于以下网站:
您需要在服务器上安装以下内容:
我的步骤是:
现在是测试Python工作的好时机。在名为test.cgi的新Hg文件夹中创建一个文件。粘贴以下python代码:
print 'Status: 200 OK'
print 'Content-type: text/html'
print
print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''
打开浏览器到您的网站,例如http://localhost/hg/test.cgi
你应该看到“它有效!”在浏览器中。
接下来让我们让hgwebdir工作。
https://www.mercurial-scm.org/repo/hg/
application = hgwebdir('hgweb.config') wsgicgi.launch(application)
到
application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config') wsgicgi.launch(application)
现在是测试它的好时机。在浏览器中转到以下网址http://localhost/hg/hgwebdir.cgi
[collections] \\server\share$\Hg\ = \\server\share$\Hg\ [web] allow_push = * push_ssl = false
这些都是我的首选项,例如我们在子站点\\ server \ share $ \ Hg中有我们的存储库。 Web应用程序将通过浏览器在登录用户的权限下运行,因此他们需要对共享的读/写权限。
最后一步是允许在第一次克隆回购时可能发生的长连接。运行以下命令将超时时间增加到50分钟:
cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000
答案 5 :(得分:3)
使用mercurial克隆mercurial存储库:
hg clone https://www.mercurial-scm.org/repo/hg/
你会在顶层找到hgwebdir.cgi。它应该安装 像任何其他cgi脚本一样。
答案 6 :(得分:2)
过去一周左右,我一直在为mercurial 1.7.2设置这个设置,为了让它正常工作,我必须做的事情与上面的文章略有不同。
在此发帖,因为谷歌一直把我带回来......
完整说明posted here
我遵循了these instructions和these (in the source)
的组合主要区别在于我必须执行"pure python" install of mercurial否则会抱怨丢失的dll,我发现使用python和isapi-wsgi的“python安装程序”非常重要。 (对于经验丰富的python开发人员来说这可能是显而易见的,但我是一个python新手,所以这对我来说是新闻)
希望这对某些人有所帮助,我不只是制造东西(我可能就像我说的那样,python新手)
答案 7 :(得分:1)
hg红皮书包含了一些比我在其他地方看到的更好的一般说明。它们不是IIS特定的,但它们非常好:
http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi
答案 8 :(得分:1)
我遇到了“...无法加载模块......”类型错误,经过一些阅读后,我的关键是忽略Mercurial文件夹中的Library.zip文件,而是使用来自C:\ Program Files(x86)\ TortoiseHg文件夹。
我在本指南中找到了#6的提示:
http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html
希望这有助于某人...
答案 9 :(得分:0)
我知道这是一个老问题,但我真的很难在 Server 2019 和 IIS 10 上安装 Hg。这是我为使其正常工作所做的工作:
安装 Python 2.7,在我的例子中是 python-2.7.18.amd64.msi。我假设它安装在 C:\Python27 中。确保将 python 添加到您的路径并安装了 pip。
在命令行中使用 pip 将 Mercurial 安装为模块:
pip install mercurial
在默认网站下添加一个名为“hg”的新应用程序,并将其指向您要使用的目录。
将 Python 配置为 IIS 10.0 中的 CGI 处理程序,用于此新网站(或整个 Web 服务器,如果您愿意)。您可以手动执行此操作,也可以在 web.config 文件中创建/添加以下内容:
<system.webServer>
<handlers accessPolicy="Read, Script">
<add name="Python 2.7" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="C:\Python27\python.exe -u "%s"" resourceType="File" />
</handlers>
</system.webServer>
#!/usr/bin/env python3
#
# An example hgweb CGI script, edit as necessary
# See also https://mercurial-scm.org/wiki/PublishingRepositories
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "hgweb.config"
# Uncomment and adjust if Mercurial is not installed system-wide
# (consult "installed modules" path from 'hg debuginstall'):
# import sys; sys.path.insert(0, "/path/to/python/lib")
# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()
from mercurial import demandimport
demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
[collections]
C:\Web\www\hg\repos\ = C:\Web\www\hg\repos\
答案 10 :(得分:-1)
您可以尝试HgLab。这不完全是hgwebdir;相反,它是一个纯粹管理的Mercurial实现,具有推拉服务器和存储库浏览器。