2011-09-22 69 views
0

我一直在想我理解subrepos以及如何讓它們適用於我的團隊工作流程,但顯然我不這樣做,因爲每次嘗試實施某些基本工作流程時,都不會結束工作的權利。保持Subrepos在中央服務器上同步

我已經閱讀了幾乎所有關於subrepos在線閱讀的內容,並且我遵循所有人們發佈的簡單示例,但是當我嘗試做更復雜的事情時。或者,也許我確實很好地理解了這一點,而我正在努力做的事情並不是很好。

讓我們瞭解一些基本知識。可以說我有一個偏遠的「有福」的回購收藏。

http://acme.com/BlessedRepos/ProjA 
          /LibA 
          /LibB 

所以我做的一個/ProjA克隆C:\ProjA和克隆/LibAC:\ProjA\LibA/LibBC:\ProjA\LibB。我創建我的.hgsub文件與

LibA = http://acme.com/BlessedRepos/LibA 
LibB = http://acme.com/BlessedRepos/LibB 

我承諾一切。然後我可以推ProjA,一切都很好。

所以,現在有人在我的球隊可以去克隆/PrjoAC:\dev\ProjA,它會拉低LibALibB也爲subrepos。這個人可以像我一樣輕鬆地從「幸福回購」推出/拉出。迄今爲止很好。

現在,我說:好的,ProjA團隊,不要再推薦那些有福的回購,這對我來說是在回顧完你的工作之後做的。從現在開始,我希望大家把你的更改ProjA開發和QA ProjA遠程回購位於:

http://acme.com/Dev/ProjA 
http://acme.com/QA/ProjA 

這是我們停下來。試圖推到http://acme.com/Dev/ProjA只會推/ProjA,而/ProjA/LibA/ProjA/LibB被推回到原來的位置,在祝福回購,而不是所期望的位置http://acme.com/Dev/ProjA

現在,我可以將我的.hgsub文件設置爲LibA = ../LibA。這將開始工作,但如果我是從福地回購做ProjA克隆,它未能得到LibALibB,我相信,因爲它希望找到當地的回購LibALibB作爲兄弟到ProjA回購我克隆。我的意思是,如果我將其複製到http://acme.com/BlessedRepos/ProjAC:\Test\ProjA它將失敗,因爲它預計會在C:\Test\LibA處找到現有的回購站。

我也可以設置我的hgsub爲LibA = LibA。但是,當你嘗試推向幸福回購時,這樣做會失敗,因爲LibA不是在受祝福的空間中嵌套的ProjA。我可以創建它們,但是我永遠不會推回到http://acme.com/BlessedRepos/LibA,只能到http://acme.com/BlessedRepos/ProjA/LibA,然後它似乎已經擊敗了subrepo開始的目的。

我敢肯定,我的第一種方法可以工作,如果我也有一些腳本,我會運行,並將.hgsub文件中的所有值從「有福」的遠程位置更改爲「開發」和「質量保證」地點,但這似乎不太理想。

所以。如果有人在那裏真的掏出這些東西,你可以向我解釋我出錯的地方,或者我可以使用subrepos來實現我的原始工作流程,或者只是確認我正在追求的東西不是非常適合subrepos。如果有助於瞭解情況,我們可能有15-20個「產品/解決方案」和50個「共享」項目。 15-20種產品中的任何一種都可以利用其解決方案中的50個共享項目中的N個。

+0

可能的副本[在克隆中進行更改時保持Mercurial子庫的最新工作流程是什麼?](http://stackoverflow.com/questions/7270810/what-is-the-workflow-to-keep -mercurial-subrepositories,先進的日期時,改變-AR) –

回答

1

您缺少的關鍵部分是您可以在服務器上多次公開LibALibB存儲庫,而不必在服務器上有多個副本。有關詳情的subrepos的另一個問題,請see my answer

另外,如果你有這樣的問題,那就來和我們談談吧 - 這比在StackOverflow上寫長文章要好得多,因爲這不是Mercurial社區的地方。你也可以使用我們擁有的郵件列表。