我正在考虑使用混合开放源代码软件和闭源软件的git存储库结构。目前的情况有点像大杂烩。多个开发人员正在从事地理分布的项目。授权存储库位于私有 GitLab 服务器上。
目录结构如下:
repo
|-- core (open source)
|-- moduleA (open source)
|-- moduleB (open source)
|-- moduleC (closed source)
实际上有更多的模块,但无论如何。
我评估了子模块以及子树,但它们不适合我们的开发过程。我找到了这个相关的问题,但那里的答案不满足我:Proper Git workflow for combined OS and Private code?
单独的回购是目前的情况,就像从svn迁移之前一样,我们也不满意。
我认为这是一个可行的解决方案,是一个大型仓库,并且有一个Jenkins工作,运行git subtree split
将开源模块拆分为单独的存储库,然后将它们推送到外部世界,< EM> GitHub的。这将是开发团队最简单的工作方式,只需要在Jenkins中进行一次设置。我在Detach (move) subdirectory into separate Git repository中找到了逐步说明。
但现在来到我的实际问题。
当开源代码在 GitHub 上时,我们将收到来自外部贡献者的拉取请求。他们的补丁将发送到存储库的 root ,而位于 GitLab 中的authorative私有存储库中,以及开发人员的补丁中。工作站,更改应适用于子目录。
编辑:我正在思考一个稍微不同的流程:
git subtree split
将开源模块拆分为单独的存储库。git subtree
将开源模块重新组合到一个新的存储库中。这具有以下优点:
git cherry-pick
合并。缺点:
答案 0 :(得分:0)
我将接受Proper Git workflow for combined OS and Private code?的接受答案:2个单独的回购,一个用于公共代码,一个用于私人代码。