我无法让 Mercurial 在 Mac OS X Lion 上的 Apache 下服务



我试图让Mercurial在Mac OS X Lion的Apache下使用hgwebdir.cgi服务。

我按照下面列出的指示去做:http://www.popitandrockit.com/2010/05/mercurial服务器——在osx - 106 snow.html

这篇文章是针对雪豹的(我猜还没有人尝试在Lion上这么做?),但它基本上是有效的。我确实做了修改,我没有使用https,因为有问题的机器在我公司的防火墙后面。

它说我应该能够访问http://servername/repository_name的存储库,但这不起作用。但是,我可以在http://servername/hg/中获得它们的列表,其中/hgScriptAlias地址。所以我应该能够通过http://servername/hg/repository_name访问存储库,但相反,我得到一个漂亮的Mercurial页面告诉我

An error has occured while processing your request:
repository /Users/username/Documents/repository_name not found

嗯,目录是有效的,并且根据Mercurial有一个有效的存储库(即hg log和类似的命令不会出错)

在主页上,我在Apache中得到类似的错误:

[(date)] [error] [client (ip address)] error accessing repository at /Users/username/Documents/repository_name

如果我猜的话,我会说这是某种访问或权限问题,但我对Apache或Mac OS X Lion不够熟悉,无法大胆猜测如何修复它

这看起来确实像一个权限问题。在标准的Mac OS X Apache上安装web用户和组是_www,您需要确保它们具有读写访问权限。另外,如果hgrc文件的权限与用户不匹配,Mercurial会报错。有两种方法可以修复它:

  1. 使存储库归Apache _www用户所有。当你输入:

    ls -ld /Users/username/Documents/repository_name
    

    在第三列和第四列应该显示_www _www。如果不是,请更改目录的用户:

    sudo chown -R _www:_www /Users/username/Documents/repository_name
    

    请注意,如果您更改了这个,您不应该从任何其他用户访问文件系统上的存储库,否则任何新创建的文件将再次具有错误的权限。

  2. 或者,显式地将您的用户添加到hgweb.configtrusted部分:

    [trusted]
    users=username
    

    在这种情况下,您仍然需要确保_www用户具有访问权限。如果你输入:

    ls -ld /Users/username/Documents/repository_name
    

    它应该在第一列显示drwxrwxr--(中间的rw很重要)和第四列显示_www。如果组不能读取或写入这些文件,请使用chmod命令将它们设置为:

    chmod -R go+rwX /Users/username/Documents/repository_name
    

    你可以改变你的仓库组为_www,像这样:

    sudo chown -R :_www /Users/username/Documents/repository_name
    

哪一种更可取取决于您的情况:如果您试图将存储库托管在服务器上,我会说第一种更可取,它更简单,更安全。如果您为了方便而尝试将其托管在本地工作站上,则第二种方法更容易,因为这样您仍然可以从当前用户访问存储库。

注意,对于临时共享,在命令行上运行hg serve可能更容易。

相关内容

  • 没有找到相关文章

最新更新