如果我理解正確,缺少的信息是您可以在製作克隆後更改默認推送路徑。當您運行
$ hg clone http://hg.server/repos/skeleton client-a
從skeleton
回購得到了client-a
克隆,然後用水銀
[paths]
default = http://hg.server/repos/skeleton
創建client-a/.hg/hgrc
所以hg push
現在將發送變更到該存儲庫。而應該使服務器上一個新的克隆:
$ hg clone skeleton client-a
,然後做出一個克隆你的機器上:然後
$ hg clone http://hg.server/repos/client-a
更改框架代碼將不再自動傳播到skeleton
服務器上的回購。
這方面的一個重要的下側是,所有的客戶端庫將是「兼容」這意味着你可以通過事故做到這一點:
$ cd client-a
$ hg pull http://hg.server/repos/client-b
這工作,因爲client-a
和client-b
有着共同的祖先skeleton
存儲庫。出於這個原因,我會簡單地複製框架文件並將它們重新到每個客戶端庫:
$ unzip skeleton.zip
$ rm skeleton.zip
$ hg add
$ hg commit -m "Initialized repository for client-a"
由於日期和提交信息會有所不同爲每個客戶端,該庫將成爲無關和hg push
和如果您嘗試混合來自不同客戶端的變更集,則hg pull
將會出錯。
你想把它作爲一個起點,還是作爲保持不變的模塊/包? –
骨架應該是新項目的基礎,所以是一個起點。在克隆骨架之前,開發人員應該在子庫(模塊)中進行更改,以便骨架總是up2date。將來,我們可能需要爲非向後兼容的事物分支骨架,但我們還沒有在那個階段。 –
如果您可以避免更改零件,使用子庫會變得更容易,但是如果您需要更改零件的骨架,則會遇到問題。我仍然不完全瞭解你的問題的細節。 –