2011-10-13 54 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

這可能是我需要的信息,但我一直沒有能夠得到它的工作或投入時間。因爲我需要在這個系統上工作,所以我嘗試了第二種選擇,但沒有這樣的運氣。 –