如果我理解正确,缺少的信息是您可以在制作克隆后更改默认推送路径。当您运行
$ 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。将来,我们可能需要为非向后兼容的事物分支骨架,但我们还没有在那个阶段。 –
如果您可以避免更改零件,使用子库会变得更容易,但是如果您需要更改零件的骨架,则会遇到问题。我仍然不完全了解你的问题的细节。 –