4

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

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

我希望能够偶尔发布主线开发的新版本,但这似乎需要我每隔一段时间将本地维护的功能“重新修补”到主线中。

如何以最小的开销将我需要的功能作为与主线分开的开发线来维护?我想避免每次主线项目发生变化时都必须重写本地维护的功能,但我不想“分叉”整个项目,因为我想继续贡献补丁并拉取从主线更新。

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

4

1 回答 1

3

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

该工作流程根本没有什么不寻常的地方。主题分支,也就是特征分支,也是一个很好的 git 习惯;工作流程将有其他好处。

于 2012-08-16T12:20:10.833 回答