假設我們有以下的(Visual Studio中)項目(簡體):組織大型項目,善變
- 基LIB-1
- 基LIB-2
- 產品-1:取決於base-lib-1
- product-2:dependi納克上基-LIB-1和基-LIB-2
- 產物-3:視基-LIB-1和基-LIB-2和用作一個組件產品-2
- 產品-4:像產品3
我想這將是一個好辦法在一個或多個Mercurial存儲庫中組織此項目結構。我們目前使用Subversion並將依賴庫作爲外部參數包含在內。
現在,一種方法是將除產品-1之外的所有產品都放在一個存儲庫中,因爲所有這些產品始終作爲單個包一起發佈。我會對這個解決方案感到最舒服,因爲那時我會非常確定如何處理存儲庫。但如何在此方案中適合產品-1而不復制base-lib-1?
作爲替代我想過使用,將這樣的組織一些子庫:
- 產品包裝-A
- 基LIB-1
- 產品-1
- 產品封裝-B
- 基-LIB-1
- 基-LIB-2
- 產物-2
- 產物-3
- 產物-4
這種方法的問題是我從來沒有使用過subrepos,所以我不確定這個解決方案會出現什麼缺陷。
例如,subrepos的行爲與SVN外部類似,您可以決定是否始終使用每個subrepo的最新版本或固定版本?
如果您進行更改,subrepos的行爲如何在base-lib-1和product-2在同一時間?那些由Mercurial處理的是同一步驟,還是你必須手動提交/推送/更新所有內容?在這種情況下base-lib-1的subrepo如何在product-package-A中表現?
如果我想開發一個新功能分支,需要在多個subrepos中進行更改,分支如何在這種情況下工作?我是否必須手動分支和合並每個存儲庫,還是由Mercurial處理?
使用subrepos組織大型項目還有其他缺陷嗎?在Mercurial中處理大量依賴的大型項目的首選方式是什麼?