我很好奇,如果這可能與水銀。我想在項目中有一個subrepos,它總是固定在手動指定的變更集上,或者更好 - 標記。如何使Mercurial subrepository始終指向某個變更集或標記?
基本上我試圖實現的是在主repo中有一個核心繫統,然後是subrepos中的所有模塊和組件,但是我不希望這些subrepos指向tip,而只是針對主要版本那些組件/模塊(因此標籤)。
我很好奇,如果這可能與水銀。我想在項目中有一個subrepos,它總是固定在手動指定的變更集上,或者更好 - 標記。如何使Mercurial subrepository始終指向某個變更集或標記?
基本上我試圖實現的是在主repo中有一個核心繫統,然後是subrepos中的所有模塊和組件,但是我不希望這些subrepos指向tip,而只是針對主要版本那些組件/模塊(因此標籤)。
子庫可以像你想要的一樣工作。
Mercurial從不自動更新subrepo的提示。它始終停留在您選擇的變更集。從documentation:
Subrepos 不會自動跟蹤他們的 來源最新的變更。而是將它們更新爲與更改集相對應的變更集 ,其中變更集在頂層變更集中籤出。這是因爲 開發人員在更新時總是會獲得一組兼容的代碼和 庫。
達到你想要什麼,你可以按照下面的步驟:
echo subrepo = https://example.com/subrepo/repo/path > .hgsub
hg add .hgsub
hg clone https://example.com/subrepo/repo/path subrepo
hg -R subrepo update mytag
hg commit
這將創建一個subrepo目錄,指定的存儲庫內容將保留在mytag
標籤上,只要您不更新手動即可!
克隆存儲庫的每個人都將擁有與您相同的變更集的子報表(即mytag
)。
僅供參考,子更新更新的變更集存儲在.hgsubstate
文件中主存儲庫的根目錄下。