如何在IIS上设置Mercurial和hgwebdir?
我一直在寻找关于如何获得hgwebdir在IIS上工作的体面的指示,但我还没有find很多值得。
Mercurial wiki上有这个“一步一步” ,但不是很好。 还有这个和这个 ,但是我再也找不到好的步骤来引导那些开始。
我只是不得不安装一个新的Mercurial实例昨天,这里是1.7的更新说明:
- 安装Mercurial (这些说明已经过1.7testing)
- 安装Python (对于Mercurial 1.7,您必须使用Python 2.6.6的x86版本)
- 您将需要从Mercurial源代码下载hgweb.cgi文件。 您可以通过运行下载源代码:
hg clone https://www.mercurial-scm.org/repo/hg/
-
创build一个将成为您的Web应用程序文件夹的文件夹。 您需要将三件事物复制到这个文件夹中:
- hgweb.cgi文件
- 从“C:\ Program Files \ Mercurial”文件夹中的Library.zip的内容
- “C:\ Program Files \ Mercurial”中的模板文件夹
-
您将需要确保您在IIS中设置了Python。
- 通过以下方式启用CGI:控制面板 – >打开或closuresWindowsfunction – >angular色 – > Web服务器(IIS) – >添加angular色服务 – >检查CGI
- 在IIS中创build一个新的Web站点,并确保物理path是您在上面创build的文件夹
- 在新网站的处理程序映射中,select“添加脚本映射”。 为请求pathinput* .cgi ,为可执行文件inputc:\ Python26 \ python.exe -u“%s” ,为名称inputPython 。
-
您还需要创build一个名为“hgweb.config”的文件,其内容与下面类似。 文件中的path必须是要存储Mercurial存储库的驱动器上的位置:
[集合]
c:\ Mercurial \ repos = c:\ Mercurial \ repos -
编辑hgweb.cgi文件并更改其设置hgweb.configpath的行,如下所示(无论hgweb.config文件位于何处):
configuration=“C:\ Mercurial \ hgweb.config”
- 现在,打开一个浏览器并导航到http://localhost/mercurial/hgweb.cgi (或者你在IIS中设置的任何适当的URLpath),你应该看到Mercurial Repositories页面。
另外,请查看Jeremy Skinners的博客文章 。 这是有点过时,但有一些额外的好的步骤,如设置url重写为更干净的URL。
从Mercurial 1.5.2发布以来,这些教程并不完全正确。 首先,hgwebdir.cgi已被删除,现在被hgweb.cgireplace。
最适合我的说明是在eworldui.net :
这些说明适用于IIS 7或更高版本。 如果你在IIS 6上进行设置,我写了类似于Win2k3和IIS 6.0的指令:
http://partialclass.blogspot.com/2010/05/setting-up-mercurial-server-on-win2k3.html
更新:得到这个工作后不久,我了解到,BitBucket改变了他们的定价scheme,提供免费的,无限的,私人托pipe: https : //bitbucket.org/ 。 当我最初从事这个项目的时候,我会心甘情愿地select这个。
我发现在Vampire Basic的博客文章是一个好的开始,但是对于我之后的内容来说,这还不够详细。
我做了一个4部分的博客文章,让你可以从头开始使用IIS,包括Active Directory集成,设置推/拉的安全权限,模板的自定义,我会在这里重现它,但它是相当的Mercurial真的被devise成在Linux / Apache上运行:
http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html
这里有一个相当好的和全面的教程: http : //vampirebasic.blogspot.com/2009/06/running-mercurial-on-windows.html
下面是我在做了大量关于在IIS6上设置hgwebdir.cgi设置的研究之后所做的工作。 它基于以下网站:
您需要在服务器上安装以下内容:
- Mercurial(我使用1.5版本)
- Python 2.6。 Python的版本取决于安装的Mercurial版本。 Mercurial 1.5使用Python 2.6。 即使您正在运行x64,也要安装x86。
我的步骤是:
- 为网站创build一个目录。 我用c:\ inetpub \ wwwroot \ hg。
- 在IIS中,右键单击hg的文件夹,select属性,select主目录选项卡。
- 点击创build应用程序button。 将执行权限设置为“脚本”。
- 仍然在主目录选项卡中,单击configurationbutton。 在“应用程序configuration”popup窗口中,单击添加button添加应用程序扩展。 可执行文件是c:\ Python26 \ python.exe -u“%s”“%s”。 扩展名是.cgi。 将“动词”设置为“限制为:GET,HEAD,POST”。 检查两个脚本引擎并validation该文件是否存在。
- 在“目录安全性”选项卡中,单击“身份validation和访问控制”部分中的“编辑”button。 取消所有validation方法,并检查“基本validation”方法。 如果您喜欢您的Active Directory域,请设置默认域。
- 在IIS中,单击左侧面板上的Web Service Extensions文件夹。 点击“添加新的Web服务扩展”链接。 扩展名应该是Python,所需的文件是c:\ Python26 \ python.exe -u“%s”“%s”。 确保新的扩展名是“允许”。
现在是testingPython正在工作的好时机。 在名为test.cgi的新的Hg文件夹中创build一个文件。 粘贴下面的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的工作。
- 删除test.cgi
- 将hg repo克隆到一个新目录:
https://www.mercurial-scm.org/repo/hg/
:https://www.mercurial-scm.org/repo/hg/
- 将hgwebdir.cgi复制到您的网页目录:c:\ inetpub \ wwwroot \ hg \从克隆的hg repo
- 编辑文件并更改
application = hgwebdir('hgweb.config') wsgicgi.launch(application)
至
application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config') wsgicgi.launch(application)
- 将Mercurial目录c:\ Program Files \ Mercurial \中的Library.zip文件解压缩到您的Web目录c:\ inetpub \ wwwroot \ hg \
- 将模板目录从c:\ Program Files \ Mercurial \ templates \复制到c:\ inetpub \ wwwroot \ hg \ templates \
- 在您的Web目录中创build一个名为hgweb.config的文件。
现在是testing的好时机。 转到浏览器中的以下URL, http://localhost/hg/hgwebdir.cgi
- 编辑hgweb.config,并粘贴以下内容:
[collections] \\server\share$\Hg\ = \\server\share$\Hg\ [web] allow_push = * push_ssl = false
这些都是我的偏好,例如我们在子目录\\ server \ share $ \ Hg中有我们的回购。 Web应用程序将通过浏览器在login用户的权限下运行,因此他们需要对共享进行读/写权限。
最后一步是在第一次克隆回购时允许长时间连接。 运行以下命令将超时时间增加到50分钟:
cd \inetpub\AdminScripts\ cscript adsutil.vbs GET /W3SVC/CGITimeout cscript adsutil.vbs SET /W3SVC/CGITimeout 3000
使用mercurial来克隆mercurial repository:
hg clone https://www.mercurial-scm.org/repo/hg/
您将在顶层findhgwebdir.cgi。 它应该像任何其他的CGI脚本安装。
在过去一周左右,我一直在为这个1.7.2版本而努力,为了让它工作起见,我不得不做了与上面的文章略有不同的事情。
在这里发布,因为谷歌不断把我带回这里….
完整的说明贴在这里
我遵循这些指令的组合(在源代码中)
主要的区别是,我必须做“纯python”安装mercurial,否则会抱怨缺lessdll,我发现python和isapi-wsgi使用“python安装程序”是非常重要的。 (也许这对于有经验的Python开发者是显而易见的,但是我是一个Python新手,所以对我来说是新闻)
希望这有助于某人,我不只是做东西(我可能是,就像我说的,python新手)
这本红皮书包含了比我在其他地方见过的更好的一般指导。 他们不是特定的IIS,但他们是相当不错的:
http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi
我遇到一个“…无法加载模块…”types的错误,并在一些阅读后,我的关键是忽略Mercurial文件夹中的Library.zip文件,而是使用C:\ Program Files(x86)\ TortoiseHg文件夹。
我在本指南中发现的第6条提示:
http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html
希望这可以帮助别人…
你可以试试HgLab 。 这不完全是hwewebdir; 而是一个纯粹pipe理的Mercurial实现,具有推拉服务器和存储库浏览器。