2010-10-19 35 views
2

我們正在使用水銀在我們的生產服務器對於一些較小的Web項目,輕鬆地部署超過SSH推更改服務器應用程序。存儲庫駐留在各自帳戶的public_html文件夾中。我可以禁用Mercurial克隆/拉動HTTP嗎?

現在,如果我做了

hg clone http://www.domain.com 

我得到

real URL is http://www.domain.com/ 
requesting all changes 
adding changesets 
adding manifests 
transaction abort! 
rollback completed 
abort: empty or missing revlog for .htaccess 

幸運的是,克隆似乎並沒有驗證是可能的,但我寧願不要讓任何人知道有一個hg倉庫首先可用。

有誰知道一個辦法完全向公衆隱瞞一個Mercurial庫,即使是在像網絡服務器的public_html/htdocs目錄公共場所?我找不到有關如何實現這一目標的任何信息。

ETA:顯然,我還沒有足夠的聲望來投票給任何答案。但是非常感謝你們兩位的幫助。 :)

+0

你能用瀏覽器訪問http://www.domain.com/.hg嗎?如果你能達到它,克隆仍然可以通過遞歸下載所有文件。 htaccess的錯誤似乎風馬牛不相及,但會導致汞它擺在首位(在'添加changesets'和'加入manifests'行是HG成功連接到存儲庫指標) – Rudi 2010-10-19 11:29:24

+0

我們有一個創建後失敗的克隆操作重寫規則路由所有請求的index.php,所以它無法訪問實際.hg目錄,我想這是克隆失敗的原因。但是就目錄權限而言,如果它不是用於重寫規則的話,它將是可訪問的。 – jgxvx 2010-10-19 13:58:50

回答

3

的public_html和填充的public_html在回購的.hg/hgrc的補充一點:

[web] 
allowpull = false 

在他們得到任何數據(當前他們在回滾之前需要獲取大量數據)之前,它們會在流程的早期出錯。請注意,allowpull沒有下劃線,與大多數其他多字詞mercurial設置不同。

這完全阻止他們通過mercurial獲取內容,但他們仍然可以使用wget,curl或webbrowser手動挑選http://www.domain.com/.hg/

要避免這種情況,你可以阻止在Web服務器級別包含/.hg/任何URL。在Apache中看起來像這樣:

<Directory "/your/doc/root/.hg"> 
    Order deny,allow 
    deny from all 
</Directory> 
+0

這工作就像一個魅力,非常感謝!這是一個複製和粘貼你的指示到相應文件的問題。 – jgxvx 2010-10-19 15:17:09

1

可以

  • 使.hg目錄進不去到Web服務器
  • 化妝.hg無形的魔力.htacces(假設你使用Apache httpd的)
  • 以外的地方的資料庫與hg archive
+0

聽起來不錯。該.hg目錄屬於哪個是相同的用戶與Web服務器(共享主機環境)的帳戶的用戶,所以我不知道我是否可以把它無法訪問到Web服務器,但我肯定會考慮第二和第三選項。非常感謝! – jgxvx 2010-10-19 14:05:11