2011-12-17 14 views
7

我很好奇,如果這可能與水銀。我想在項目中有一個subrepos,它總是固定在手動指定的變更集上,或者更好 - 標記。如何使Mercurial subrepository始終指向某個變更集或標記?

基本上我試圖實現的是在主repo中有一個核心繫統,然後是subrepos中的所有模塊和組件,但是我不希望這些subrepos指向tip,而只是針對主要版本那些組件/模塊(因此標籤)。

回答

3

子庫可以像你想要的一樣工作。

Mercurial從不自動更新subrepo的提示。它始終停留在您選擇的變更集。從documentation

Subrepos 不會自動跟蹤他們的 來源最新的變更。而是將它們更新爲與更改集相對應的變更集 ,其中變更集在頂層變更集中籤出。這是因爲 開發人員在更新時總是會獲得一組兼容的代碼和 庫。

達到你想要什麼,你可以按照下面的步驟:

  1. echo subrepo = https://example.com/subrepo/repo/path > .hgsub
  2. hg add .hgsub
  3. hg clone https://example.com/subrepo/repo/path subrepo
  4. hg -R subrepo update mytag
  5. hg commit

這將創建一個subrepo目錄,指定的存儲庫內容將保留在mytag標籤上,只要您不更新手動即可!

克隆存儲庫的每個人都將擁有與您相同的變更集的子報表(即mytag)。

僅供參考,子更新更新的變更集存儲在.hgsubstate文件中主存儲庫的根目錄下。

相關問題