2012-08-16 69 views
4

在我的工作中,我們爲某些產品使用了開源軟件,並在主線項目之上開發了一些附加功能和功能提供。開源項目正在積極開發之中,我打算將這些變化中的一部分回饋給主線開源項目。在(上游)開源項目頂部保留附加功能

但是,我還添加了一些其他功能,這些功能是我們產品所需的。這些功能具有安全意義,這對我的用例來說是完全可以接受的,但一般來說不能接受。因此,開源項目決不會接受這些功能作爲主線開發的一部分,所以我必須自己維護這些功能。

我希望能夠偶爾採用新版本的主線開發,但似乎需要我每隔一段時間將我的本地維護功能「重新打包」到主線。

如何以最小開銷維護我作爲獨立的主線開發線所需的功能?每當主線項目發生變化時,我都想避免重寫本地維護的功能,但我不想「分叉」整個項目,因爲我希望繼續提供補丁並拉動來自主線的更新。

最好是將我自己的一組「補丁」文件保存到主線項目的未來發行版中,以實現我的獨立功能(我嘗試應用這些補丁)? (注意:開源項目使用git進行版本控制,如果有任何git工具可以幫助解決這個問題)。

回答

2

只需使用主題分支。在編寫代碼時,確保您可以回饋項目的代碼位於不同的主題分支中,而不是您特定實現所需的代碼。私下裏,對於你的僱主來說,把他們全部合併到master來使你的軟件工作。在公開場合,只發布和拉請求(或通過電子郵件或任何項目做的補丁)那些不包含您的站點特定代碼的。

工作流程沒有什麼不尋常之處。主題分支,又名特色分支,也是一個很好的git習慣;工作流程將會有其他額外的好處。