如何使用Mercurial同步同一工具的已关闭和开源版本?

时间:2010-12-06 04:48:57

标签: version-control mercurial licensing

我有一个工具我想发布源代码。但是,由于许可限制,一些功能无法作为开源部件发布。我希望通常使用开源版本的代码来开发工具本身,但是在每个版本中我都需要将封闭版本中的一些功能移植回特定客户端的构建中。

我不能只为此使用普通分支,因为这会将关闭的源位放入我想要共享开放代码的位置(在本例中为Bitbucket)。

我有什么可以做的,或者我是否因为手动移动光源而陷入困境?

2 个答案:

答案 0 :(得分:2)

你能否将秘密位分离成插件/插件(可以通过构建或运行时配置启用)并将代码库分成两个存储库,一个用于开源版本(也是封闭源版本的基础) ),还有一个用于闭源补充?

这样,闭源构建仍然会使用相同的存储库,但是从秘密的第二代码库中添加一些额外的东西。构建过程类似于外部上游库的过程。

答案 1 :(得分:2)

您将拥有2个存储库,一个包含所有已关​​闭的源,另一个包含所有已打开的存储库。

在您的封闭源存储库中,您将从开源存储库中提取所有更改,并与已关闭的源合并。

这应该没有问题,除非您必须实现两者中不同的部分,然后在合并更改时,这些区域中会出现合并冲突。