我有多个模块,每个模块都在自己的存储库中。然后是一个框架,它有一些所有客户端通用的基本代码,以及一些模块的子代码库,这些模块总是包含在内。
在新客户端上使用此设置的最佳方式是什么?
我目前遇到的问题是:-如果我克隆骨架,然后在骨架中添加一些东西并将其推送到服务器,骨架就会更新。
如果我为客户端的每个项目都有一个存储库,并在其中克隆骨架,同样的事情也会发生:骨架中的更改被推送到骨架。
现在,我可能可以通过克隆骨架,然后立即在骨架中为客户端创建一个新的分支来修复这个问题,但我更喜欢它有自己的存储库来交付到服务器,而不是作为骨架的分支(我想将其用于骨架版本,而不是项目)。
你有什么建议?
发布于 2012-01-30 22:49:12
如果我理解正确的话,缺少的一点信息是您可以在创建克隆后更改默认推送路径。当你运行时
$ hg clone http://hg.server/repos/skeleton client-a为了从skeleton存储库获得client-a克隆,Mercurial使用以下命令创建client-a/.hg/hgrc
[paths]
default = http://hg.server/repos/skeleton因此,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将出错。
https://stackoverflow.com/questions/7469686
复制相似问题