在我的工作中,我们为我们的一些产品使用了开源软件,并在主线项目提供的基础上开发了一些额外的特性和功能。开源项目正在积极开发中,我打算将其中一些更改贡献回主线开源项目。
但是,我还添加了我们产品所需的其他一些功能。这些功能具有安全隐患,这对于我的用例来说是完全可以接受的,但一般来说是不可接受的。因此,开源项目永远不会接受这些功能作为主线开发的一部分,所以我必须自己维护这些功能。
我希望能够偶尔发布主线开发的新版本,但这似乎需要我每隔一段时间将本地维护的功能“重新修补”到主线中。
如何以最小的开销将我需要的功能作为与主线分开的开发线来维护?我想避免每次主线项目发生变化时都必须重写本地维护的功能,但我不想“分叉”整个项目,因为我想继续贡献补丁并拉取从主线更新。
最好维护我自己的一组“补丁”文件来实现我的单独功能(我尝试在其中应用这些补丁)到主线项目的未来版本?(注意:开源项目使用 git 进行版本控制,如果有任何 git 工具可以帮助解决这个问题。)