2010-02-06 58 views
8

我想爲我的工作項目評估Mercurial。但是我的大部分項目都非常依賴svn:externals-like的支持。我搜索了StackOverflow,並在Mercurial中搜索相應的支持。我發現的所有內容都是在Mercurial 1.3中添加的subrepo功能,但the page for this feature說:Mercurial 1.4.x中的subprepos功能是否可供生產使用?

subrepos是Mercurial 1.3的一個實驗性功能。所以不要在關鍵任務倉庫上這樣做!

我不想使用不穩定的東西。

任何人都可以看到這個功能的真實狀態,以及拋光/完成它的計劃以及什麼時候它將被稱爲「穩定」並準備好用於關鍵任務存儲庫的計劃?

+0

我已經更新了wiki,以便更清楚地瞭解狀態,我希望有所幫助。 – 2010-02-28 13:34:05

回答

6

#mercurial IRC頻道中的單詞是subrepos將繼續像他們一樣工作,並且支持將會增長。例如,目前'hg status'命令不是subrepo意識到的 - 它的工作原理,它只是沒有遞歸,但在未來它會。但是,當前的行爲,fileformats(.hgsub和.hgsubstate)只能以向後兼容的方式更改。

所以,現在就去指望它,並期待它變得更好。

P.S.從1.4.2開始,subrepos現在可以是顛覆性回購,所以你可以使用mercurial parent和svn kid。

+0

因此,這個功能沒有明確的路線圖?說,在1.6(或1.7)它應該幾乎完整,或類似的? – bialix 2010-02-07 03:46:32

+3

現在完全夠用了。一些工作流程將會稍微麻煩一點,但現在已經完成了。 – 2010-02-08 05:16:03

1

到目前爲止,我已經在我的(輕量級)使用中獲得了好運。它在兩個地方派上用場:

  1. 使用單個hg pull命令備份不相關存儲庫的樹。
  2. 將項目與特定版本的依賴關聯在一起,以便單個hg clone獲取可構建的源代碼。這更接近典型的svn:externals用法。

這裏有一對夫婦到目前爲止,我已經看到了它的侷限性:

  1. 在情況#1以上,你必須同時提交所有subrepos。這只是偶爾令人討厭的,因爲Mercurial(與任何DVCS一樣)鼓勵頻繁提交—,因此大多數回購券不會處於未完成狀態。
  2. 只有最基本的Mercurial命令是subrepo-aware:clone,push/pull,update/commit,也許還有其他幾個。
  3. 擴展作者將需要時間根據存儲庫測試其擴展,並使用subrepos。

當Mercurial團隊將該功能描述爲「實驗性」時,並不意味着它會突然決定清除所有數據。他們只是表示他們沒有圍繞所有的邊界案例(如名稱衝突)進行編碼(例如,一位開發人員添加名爲README的子文件夾,而另一位開發人員添加了名爲README的文本文件)。

+0

我的用例在第一個列表中是#2。 – bialix 2010-02-07 04:04:02

相關問題