2010-11-03 30 views
2

我有一個Windows託管的mercurial存儲庫,UserA,UserB和UserC有權推送到。 UserA可以高興地推/拉等...但一旦UserC推送... UserA開始收到以下錯誤:用戶推送到mercurial存儲庫導致其他用戶的http 500錯誤

abort:HTTP錯誤500:.hg \ store \ data/_web/_mvc._sitemap.i:訪問被拒絕

唯一的'修復'是爲了覈實和重新啓動遠程存儲庫。

有沒有人有這種類型的問題的經驗?

更新: 存儲庫位於服務器上的驅動器上,IIS位於其上。用戶在本地連接。安裝程序非常適合Mercurial wiki。

+0

提供有關mercurial服務器的更多詳細信息。它是如何設置的。用戶如何訪問它... – pyfunc 2010-11-03 17:24:18

+0

爲了清晰起見,我更新了問題。 – Webjedi 2010-11-03 17:29:07

+1

這是一個權限問題,當C推送他添加的文件沒有正確的權限時,這意味着Web服務器無法訪問它們。 – tonfa 2010-11-03 17:59:55

回答

2

我把tonfa的答案放在這裏,附加一些額外的信息。這是完全正常的,實際上文件系統是如何工作的。當你的用戶直接用磁盤訪問時,他們正在創建他們擁有的新文件。除非採取措施確保其擁有的文件也可由其協作者寫入,否則後續推動者(以及依賴於默認權限的拉手)將被告知他們無法訪問新創建的文件。

有幾種常規方法來避免這種所有這些都是服務器管理員的工作而不是推送用戶的工作。或者:

  • 更改權限,以便所有的新文件會自動與權限,讓所有合作者讀/寫訪問
  • 讓每個人只能使用HTTP接口,用於推/拉使所有的讀/寫操作的完成添加相同的(IIS)用戶

在unix土地前者很容易做到使用「粘性組」位和「umask」。在Windows上,可能只有一半的時間更簡單。 ;)

+0

每個人都在使用HTTP接口,所以很奇怪,爲什麼它看起來不太好。我所做的和似乎正在工作的是將.hg和子文件夾的所有者更改爲服務器的用戶組。非常感謝......會發誓要通過HTTP和單個IIS用戶本來可以,但顯然不是。 – Webjedi 2010-11-04 14:32:50

+0

這是一個模糊的回憶,但我認爲Mercurial使用.hg/store目錄本身的權限作爲它創建的任何新文件的權限(與* nix上的umask的反和),所以如果.hg/store最初創建瓦特/非羣體友好燙髮可能有所作爲。這可能會解釋你糾正.hg子文件夾的問題。無論如何,很高興現在去爲你好。 – 2010-11-04 15:34:39

相關問題