2011-11-15 68 views
1

這看起來似乎是一個愚蠢的想法,但是無論如何要通過http提供一個mercurial倉庫而沒有捆綁在hgweb.cgi中的任何web界面功能。沒有Web界面的hgweb

我希望用戶能夠通過http://克隆/推送存儲庫,但我不希望他們能夠通過Web界面查看存儲庫或文件。

靜態HTTP是一個選項,但官方mercurial docs聲稱這是非常緩慢的。

如果這不是微不足道的,是否有人知道一個示例代碼,通過http服務於hg存儲庫,而不支持瀏覽器接口?

在此先感謝。

+0

我很好奇。爲什麼?! –

回答

2

我做了hgweb文件的快速檢查,發現這個:

找到hgweb/webcommands.py文件的善變安裝,並在編輯器中打開它。

__all__ = [ 
    'log', 'rawfile', 'file', 'changelog', 'shortlog', 'changeset', 'rev', 
    'manifest', 'tags', 'bookmarks', 'branches', 'summary', 'filediff', 'diff', 
    'annotate', 'filelog', 'archive', 'static', 'graph', 'help', 
] 

此:在文件的頂部更改下面的代碼

__all__ = [ 
] 

這將禁用所有的網絡命令;您仍然可以查看回購列表,但不能查看其他相關信息。

我沒有檢查hg clonehg pull,但不是hg push

0

我不知道你爲什麼要限制對UI的部分,因爲這裏提供的任何信息是可訪問的,如果他們可以訪問這些文件,但這樣吧:P

如果你想一些乾淨的解決方案,我認爲採取hgweb.cgi的代碼,並重寫它不會太困難,但我認爲你也可以做更快的事情:hg serve -t /dev/null

這將使用/dev/null作爲UI部分的模板,所以用戶將在連接到服務器時會收到「內部服務器錯誤」頁面,但通過hg可以正常訪問存儲庫。

唯一的缺點是,如果通過瀏覽器進行訪問,日誌將顯示錯誤字段。 PS:如果您不在Unix系統上,只需使用任何空目錄作爲模板的源代碼。

+0

這個解決方案有一個很大的缺點:'hg serve'沒有訪問控制,所以如果你想啓用推送,你只能允許所有人使用。 –

+0

關於訪問控制的問題沒有提到,所以我認爲這不是必需的。 – krtek