在公司,我们正在开发已经存在的产品开源版本的企业版。
出于实际目的,我们希望在单一的整体git存储库上拥有企业版和开源版的代码库,以保持开发过程的简单性。在内部,这就是我们构建代码库的方式:
ini_set("auto_detect_line_endings", true);
$handle = fopen("data:text/plain,$text", 'r');
$result = '';
while ( false !== $line = fgets($handle, 1024) ) {
if ( empty(trim($line)) )
break;
$result .= $line;
}
但是,我们希望人们能够为开源软件做出贡献。这包括制作PR,创建问题,分叉代码库等等。
这意味着虽然我们需要将企业代码库保密,但开源需要位于公共存储库中。
我们可以创建两个完全独立的存储库,但是正如我所说,这使得开发变得困难,因为开源上经常会有变化,这可能会影响企业,因为前者依赖于后者。 / p>
这是我们正在考虑的事情,我们不确定技术上是否可行:
我们可以创建一个主存储库(私有),并将该存储库中的一个或多个选定文件夹镜像到公共存储库吗?
* main-repository-private
/folder-for-open-source-edition
/folder-enterprise-edition
答案 0 :(得分:0)
我的建议是您为企业版创建一个私有存储库。为开源版本创建另一个公共存储库。 将私有存储库中的子模块添加到开源版本存储库。
通过这种方式,您可以决定何时将企业版升级到开源版中的新版本,并获得将开源版源的内容放在企业版相同目录结构中的好处。
在执行此操作之前,请务必研究子模块的工作原理,以便了解如何处理子模块。简而言之,它只是另一个存储库中的存储库,指出将从哪个提交子模块存储库获取源。您可以在该子模块目录中工作,就像您在另一个存储库中一样。