2011-08-23 140 views
0

隨着新版本Mercurial的發佈,我們希望以某種方式強制開發人員,設計人員和其他人使用Mercurial的已批准(或更高版本)版本。例如,我們目前使用的是1.8.3版本,我希望能夠自動阻止/拒絕用戶在1.8.3之前使用任何東西訪問我們的存儲庫,並允許任何後續的版本。 我可以用鉤子做這個嗎?如何強制Mercurial客戶端使用特定版本的Mercurial?

我們在Windows和IIS上運行我們的服務器。我想寫一個IIS擴展,它爲不是正確版本的客戶端返回了500個錯誤,但客戶端不會在其HTTP請求中發送任何版本信息,只是「mercurial/proto 1.0」,我假設它意味着Mercurial的1.0版本HTTP協議。

是我想要的嗎?有沒有其他方法可以解決這個問題?

我們想這樣做,因爲Mercurial區分大小寫。我們在不區分大小寫的Windows上100%。這導致我們無數案件摺疊衝突。我們浪費他們的時間。雖然Mercurial已經改進了對案件的處理,但它仍然存在可以引入案例摺疊問題的情況。 由於在新版本中進行了案例處理改進,因此我們希望能夠強制我們的用戶使用這些版本,所以我們不需要花時間修復新問題。

+0

iirc有一些擴展來幫助進行案例摺疊嗎? –

回答

2

您是否有強烈的理由要執行此操作? Mercurial具有內部機制,可以自行處理版本特性:如果您使用1.8.3版本創建了一個存儲庫,該存儲庫使用的功能在1.6中尚不存在,那麼1.6客戶端將拒絕與這樣的存儲庫進行交互。換句話說,mercurial本身拒絕訪問,但不是基於版本號,而是基於實際功能。這樣,如果新版本不以任何方式破壞兼容性,那麼可以將兩個版本並排使用,而不會出現任何問題。

從內部看,這是可行的,因爲mercurial會向資源庫的元信息添加所需要素的列表,並在嘗試對其執行任何操作之前檢查此列表。如果列表包含mercurial不知道(尚)的功能,則認爲它不能與其進行有意義的交互並拒絕合作。

因此,IMO最好的做法是簡單地制定一項政策,要求開發人員使用最新版本,但不要添加其他技術措施。如果有人試圖推出一個真的太舊的版本,那麼他們會收到一條錯誤消息,如果他們抱怨,你可以簡單地指出他們的官方政策。

+0

我已更新我的問題,以包含我們希望獲得此功能的動機。 –

+0

我看到...嗯,Windows比較不區分大小寫,但它確實存儲大小寫。也許有一種方法可以防止第一個地方的情況衝突,在mercurial之外? – tdammers

0

如果您在Windows上,那麼如何使用域策略以某種方式部署Mercurial安裝程序?

相關問題