如何在IIS上设置Mercurial和hgwebdir?

我一直在寻找关于如何获得hgwebdir在IIS上工作的体面的指示,但我还没有find很多值得。

Mercurial wiki上有这个“一步一步” ,但不是很好。 还有这个和这个 ,但是我再也找不到好的步骤来引导那些开始。

我只是不得不安装一个新的Mercurial实例昨天,这里是1.7的更新说明:

  1. 安装Mercurial (这些说明已经过1.7测试)
  2. 安装Python (对于Mercurial 1.7,您必须使用Python 2.6.6的x86版本)
  3. 您将需要从Mercurial源代码下载hgweb.cgi文件。 您可以通过运行下载源代码: hg clone https://www.mercurial-scm.org/repo/hg/
  4. 创建一个将成为您的Web应用程序文件夹的文件夹。 您需要将三件事物复制到这个文件夹中:

    • hgweb.cgi文件
    • 从“C:\ Program Files \ Mercurial”文件夹中的Library.zip的内容
    • “C:\ Program Files \ Mercurial”中的模板文件夹
  5. 您将需要确保您在IIS中设置了Python。

    • 通过以下方式启用CGI:控制面板 – >打开或关闭Windows功能 – >角色 – > Web服务器(IIS) – >添加角色服务 – >检查CGI
    • 在IIS中创建一个新的Web站点,并确保物理路径是您在上面创建的文件夹
    • 在新网站的处理程序映射中,选择“添加脚本映射”。 为请求路径输入* .cgi ,为可执行文件输入c:\ Python26 \ python.exe -u“%s” ,为名称输入Python
  6. 您还需要创建一个名为“hgweb.config”的文件,其内容与下面类似。 文件中的路径必须是要存储Mercurial存储库的驱动器上的位置:

    [集合]
    c:\ Mercurial \ repos = c:\ Mercurial \ repos

  7. 编辑hgweb.cgi文件并更改其设置hgweb.config路径的行,如下所示(无论hgweb.config文件在哪里):

    配置=“C:\ Mercurial \ hgweb.config”

  8. 现在,打开一个浏览器并导航到http://localhost/mercurial/hgweb.cgi (或者你在IIS中设置的任何适当的URL路径),你应该看到Mercurial Repositories页面。

另外,请查看Jeremy Skinners的博客文章 。 这是有点过时,但有一些额外的好的步骤,如设置网址重写为更干净的URL。

从Mercurial 1.5.2发布以来,这些教程并不完全正确。 首先,hgwebdir.cgi已被删除,现在被hgweb.cgi替换。

最适合我的说明是在eworldui.net :

http://www.eworldui.net/blog/post/2010/04/08/Setting-up-Mercurial-server-in-IIS7-using-a-ISAPI-module.aspx

这些说明适用于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/ 。 当我最初从事这个项目的时候,我会心甘情愿地选择这个。

我发现在Vampire Basic的博客文章是一个好的开始,但是对于我之后的内容来说,这还不够详细。

我做了一个4部分的博客文章,让你从头开始使用IIS,包括Active Directory集成,设置推/拉的安全权限,模板的自定义,我会在这里重现它,但它是相当Mercurial真的被设计成在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。

我的步骤是:

  • 为网站创建一个目录。 我用c:\ inetpub \ wwwroot \ hg。
  • 在IIS中,右键单击hg的文件夹,选择属性,选择主目录选项卡。
  • 点击创建应用程序按钮。 将执行权限设置为“脚本”。
  • 仍然在主目录选项卡中,单击配置按钮。 在“应用程序配置”弹出窗口中,单击添加按钮添加应用程序扩展。 可执行文件是c:\ Python26 \ python.exe -u“%s”“%s”。 扩展名是.cgi。 将“动词”设置为“限制为:GET,HEAD,POST”。 检查两个脚本引擎并验证文件是否存在。
  • 在“目录安全性”选项卡中,单击“身份验证和访问控制”部分中的“编辑”按钮。 取消所有验证方法,并检查“基本验证”方法。 如果您喜欢您的Active Directory域,请设置默认域。
  • 在IIS中,单击左侧面板上的Web Service Extensions文件夹。 点击“添加新的Web服务扩展”链接。 扩展名应该是Python,所需的文件是c:\ Python26 \ python.exe -u“%s”“%s”。 确保新的扩展名是“允许”。

现在是测试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/te​​st.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目录中创建一个名为hgweb.config的文件。

现在是测试的好时机。 转到浏览器中的以下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应用程序将通过浏览器在登录用户的权限下运行,因此他们需要对共享进行读/写权限。

最后一步是在第一次克隆回购时允许长时间连接。 运行以下命令将超时时间增加到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/ 

您将在顶层找到hgwebdir.cgi。 它应该像任何其他的CGI脚本安装。

在过去一周左右,我一直在为这个1.7.2版本而努力,为了让它工作起见,我不得不做了与上面的文章略有不同的事情。

在这里发布,因为谷歌不断把我带回这里….

完整的说明贴在这里

我遵循这些指令的组合(在源代码中)

主要的区别是,我必须做“纯python”安装mercurial,否则会抱怨缺少dll,我发现python和isapi-wsgi使用“python安装程序”是非常重要的。 (也许这对于有经验的Python开发者是显而易见的,但是我是一个Python新手,所以对我来说是新闻)

希望这有助于某人,我不只是做东西了(我可能是,就像我说的,蟒蛇新手)

这本红皮书包含了比我在其他地方见过的更好的一般指导。 他们不是特定的IIS,但他们是相当不错的:

http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi

我遇到一个“…无法加载模块…”类型的错误,并在一些阅读后,我的关键是忽略Mercurial文件夹中的Library.zip文件,而是使用C:\ Program Files(x86)\ TortoiseHg文件夹。

我在本指南中发现的第6条提示:

http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html

希望这可以帮助别人…

你可以试试HgLab 。 这不完全是hwewebdir; 而是一个纯粹管理的Mercurial实现,具有推拉服务器和存储库浏览器。