2012-03-23 48 views
3

我的項目使用了一個mercurial倉庫,並且是在Linux下開發的。它也取決於我們希望與其他項目分享的「共同」圖書館。 我目前正在考慮的解決方案是將該庫放入一個mercurial subrepository中,並按建議here創建一個「精簡shell」存儲庫。含有mercurial subrepositories的工作流程

假設我的倉庫看起來是這樣的:

project/ 
    core/ 
    common/ 

我不知道的工作流程應該是什麼樣子。我應該什麼時候承諾project?我可以在其上創建功能分支,還是僅在子庫中創建功能分支?新功能需要在corecommon之間發生向後不兼容的更改時會發生什麼情況?

任何額外的提示,將不勝感激。

+1

您是否閱讀過Subrepository文檔? **他們很清楚地回答你的問題(大部分?)。 [在aragost Trifork wiki中的子庫](http://mercurial.aragost.com/kick-start/en/subrepositories/) – 2012-03-24 10:18:29

回答

1

什麼時候應該承諾項目?

由於項目庫只應包含子庫(並且跟蹤它們的修訂版),所以當你檢出核心庫或公共庫的不同版本時,你應該(也只能)永久希望將其用於您的項目。

我是否在其上或僅在子庫中創建功能分支?

你必須創建一個項目回購,回購既要實現的功能,一個「功能」回購。

如果你只用叉子叉項目回購,它仍然會跟蹤原始核心/共同。 另一方面,您還需要分解項目回購以獲得包含所有必需的subrepos的完整工作環境。

另一種方法是每個開發人員都有自己的項目回購永久性分支,並跟蹤他目前正在處理的功能回購。

然後只需爲已更改的子庫創建拉取請求。

當一個新的功能需要在覈心和共同

這將意味着你會做向後兼容的改變,會發生什麼/提交/推兩個庫這些變化和項目更新跟蹤版本shell回購(提交新的shell回購狀態並推送它)。

這會導致您的項目的工作版本。

當然,當核心或公用存儲庫的不兼容版本正在使用什麼不起作用。

聽起來像一個人,應該努力爲常見的回購向後兼容,因爲它也可能用於其他項目。