首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mercurial中为多个类似的项目使用框架

在Mercurial中为多个类似的项目使用框架
EN

Stack Overflow用户
提问于 2011-09-19 18:44:11
回答 1查看 107关注 0票数 1

我有多个模块,每个模块都在自己的存储库中。然后是一个框架,它有一些所有客户端通用的基本代码,以及一些模块的子代码库,这些模块总是包含在内。

在新客户端上使用此设置的最佳方式是什么?

我目前遇到的问题是:-如果我克隆骨架,然后在骨架中添加一些东西并将其推送到服务器,骨架就会更新。

如果我为客户端的每个项目都有一个存储库,并在其中克隆骨架,同样的事情也会发生:骨架中的更改被推送到骨架。

现在,我可能可以通过克隆骨架,然后立即在骨架中为客户端创建一个新的分支来修复这个问题,但我更喜欢它有自己的存储库来交付到服务器,而不是作为骨架的分支(我想将其用于骨架版本,而不是项目)。

你有什么建议?

EN

回答 1

Stack Overflow用户

发布于 2012-01-30 22:49:12

如果我理解正确的话,缺少的一点信息是您可以在创建克隆后更改默认推送路径。当你运行时

代码语言:javascript
复制
$ hg clone http://hg.server/repos/skeleton client-a

为了从skeleton存储库获得client-a克隆,Mercurial使用以下命令创建client-a/.hg/hgrc

代码语言:javascript
复制
[paths]
default = http://hg.server/repos/skeleton

因此,hg push现在会将变更集发送到该存储库。您应该改为在服务器上创建一个新的克隆:

代码语言:javascript
复制
$ hg clone skeleton client-a

然后在你的机器上复制一份:

代码语言:javascript
复制
$ hg clone http://hg.server/repos/client-a

然后,对框架代码的更改将不再自动传播到服务器上的skeleton存储库。

这样做的一个重要缺点是,您的所有客户端存储库将是“兼容的”,这意味着您可以意外地做到这一点:

代码语言:javascript
复制
$ cd client-a
$ hg pull http://hg.server/repos/client-b

这是因为client-aclient-bskeleton存储库中共享一个共同的祖先。因此,我将简单地复制框架文件,并将它们重新添加到每个客户端存储库:

代码语言:javascript
复制
$ unzip skeleton.zip
$ rm skeleton.zip
$ hg add
$ hg commit -m "Initialized repository for client-a"

由于每个客户端的日期和提交消息将不同,因此如果您尝试混合来自不同客户端的变更集,存储库将变得不相关,并且hg pushhg pull将出错。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7469686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档