在(上游)开源项目之上维护其他功能

时间:2012-08-16 11:23:00

标签: git version-control open-source

在我的工作中,我们为部分产品使用了开源软件,并在主线项目提供的基础上开发了一些额外的功能和功能。开源项目正在积极开发中,我打算将其中的一些变化贡献给主线开源项目。

但是,我还添加了我们产品所需的其他一些功能。这些功能具有安全隐患,对于我的用例来说是完全可以接受的,但一般来说是不可接受的。因此,开源项目永远不会接受这些功能作为主线开发的一部分,所以我必须自己维护这些功能。

我希望能够偶尔使用主流开发的新版本,但似乎这需要我经常将我本地维护的功能“重新修补”到主线。

如何以最小的开销将我需要的功能作为单独的开发线保持在主线上?我希望每次主线项目发生变化时都不必重写本地维护的功能,但我不想“整理”整个项目,因为我想继续提供补丁和拉从主线更新。

最好是维护我自己的一组“补丁”文件来实现我的单独功能(我尝试应用这些补丁)到未来版本的主线项目吗? (注意:开源项目使用git进行版本控制,如果有任何git工具可以帮助解决此问题。)

1 个答案:

答案 0 :(得分:3)

只需使用主题分支。在进行编码时,请确保您可以回馈给项目的代码位于不同的主题分支中,而不是特定实现所需的代码。私下,为了您的雇主,将所有这些合并到master以使您的软件正常运行。公开地,只发布和提取请求(或通过电子邮件或任何项目执行的补丁)那些不包含您的站点特定代码的请求。

这个工作流程根本没有什么不寻常之处。主题分支,即特征分支,也是一个很好的git习惯;工作流程将有其他额外津贴。