我正在为另一个开源软件构建一个开源客户端。第三方软件版本发布时带有1.0,1.1,2.0,2.1等标签。这些版本都被合并回主版,其软件的任何补丁都增加了版本,因此目前没有修补多个主要版本的概念
在那些不断变化的版本中,这些代码在代码中存在一些显着差异,这些差异代表了客户端所需代码的相当大的差异。因此,支持1.0的客户端可能与支持1.1版的客户端存在一些不兼容的差异,尽管它们将共享大部分代码库。当我发现错误/改进时,我还需要修补客户端的每个版本。有时该补丁可能会影响客户端的每个版本,有时可能只有1个版本。因此,虽然我可能正在使用客户端的2.1版本(对应于第三方软件的2.1版本),但我可能必须返回并发布原始1.1客户端版本的1.1.1补丁(希望一切都有意义) )。
我正在试图找出与Git(我在Visual Studio和GitHub中工作)一起使用的策略来支持这一点。现在我倾向于为软件的每个版本创建一个master的分支,更新代码以与新版本兼容,然后将其合并回master,并使用特定的修补程序版本号标记每个分支中的每个提交。这应该允许我签出特定的分支版本来更新,提交和重新打包以进行部署。我不认为它处理更新的东西虽然在每个分支中仍然很常见,所以我需要在每个分支中执行更新(显然为每个分支提交新的标记版本)。
有没有更好的方法来做我想要完成的事情?
答案 0 :(得分:0)
如果(a)可以预测代码的哪些部分因版本而异,或者(b)你可以以允许特定于版本的项目中的版本覆盖核心项目行为的任何给定部分的方式构造代码。这不是一个完美的解决方案 - 而且我不确定是否有一个 - 但它会缓解你描述的一些问题。