2011-10-13 29 views
3

我想让Mercurial在Mac OS X Lion上的Apache下使用hgwebdir.cgi服务。我无法让Mercurial在Mac OS X Lion上的Apache下提供服务

我跟这里列出的指示: http://www.popitandrockit.com/2010/05/mercurial-server-on-osx-106-snow.html

那篇文章是雪豹(我想没有一个人试图做到这一点的狮子吗?),但它主要的工作原理。我做了修改,我没有使用https,因为有问题的机器在我公司的防火墙后面。

它说,我应该能够访问存储库在http://servername/repository_name但这不起作用。但是,我可以在http://servername/hg/上获得它们的列表,其中/hgScriptAlias地址。所以我应该能够通过http://servername/hg/repository_name得到一个信息库,而是我得到一个很好的水银页告诉我

An error has occured while processing your request: 

repository /Users/username/Documents/repository_name not found 

那么,该目录是有效的,这里面就有一个有效的资料库根据水银(即hg log和类似的命令不报错了)

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

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

被我猜我会说这是一些作者访问权限或权限问题,但我对Apache或Mac OS X Lion不够熟悉,不知道如何修复它。

回答

3

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

  1. 使存储库拥有Apache _www用户。如果键入:

    ls -ld /Users/username/Documents/repository_name 
    

    它应该显示在第三和第四列_www_www。如果没有,更改目录的用户:

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

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

  2. 或者,您的用户明确地添加到trusted部分在hgweb.config

    [trusted] 
    users=username 
    

    在这种情况下,你仍然需要确保该_www用户可以访问的。如果键入:

    ls -ld /Users/username/Documents/repository_name 
    

    它应该显示在第四的第一列(中间rw是重要的)和_wwwdrwxrwxr--。如果文件不是由组读写,使用chmod命令,使他们:

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

    你可以组你的资料库更改为_www,像这样:

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

这两者中的哪一个更好取决于你的情况:如果你想把你的存储库托管在服务器上,我会说第一个是可取的,它更简单,更安全一些。如果您尝试将其托管在本地工作站上以方便起见,则第二种更容易,因为您仍然可以从当前用户访问存储库。

请注意,对于ad-hoc共享,在命令行上运行hg serve可能会更容易。

我希望有帮助。

+0

这可能是我需要的信息,但我一直没有能够得到它的工作或投入时间。因为我需要在这个系统上工作,所以我尝试了第二种选择,但没有这样的运气。 –