我们的软件产品线需要同时开发和维护多个软件版本。我们是相对的 Git 新手,最近采用了 Git Flow 来利用Driessen 的分支模型。我们有一个非常小的软件团队,很少有专门的开发人员(我们都身兼数职),也没有“集成大师”。
很多搜索都没有找到关于如何使 Git 和 Git Flow 适应我们的需求的具体建议。事实证明,Git Flow 不太适合同时支持多个版本。关于 SO 的一个相关讨论有答案表明需要使用单独的分支名称来跟踪单独版本的历史记录。这和相关策略会消除 Git Flow,除非它被修改;请参阅上面的团队限制,以了解这对我们来说不实用的原因。
关键问题是其他人发现什么是在支持多个发布线的同时尽可能紧密地实施 Driessen 分支模型的好方法?
更新:
通过更有针对性的搜索和对一些选项的内部讨论来提炼下面的答案(特别是@Rasmus'),我们正在实施以下解决方案,我提供的解决方案可能与类似条件下的类似团队相关。
我们不会继续使用 Git Flow。相反,我们将通过在每个分支名称前加上其预期的发布字符串,将 Driessen 的模型应用于 repo 中的每个单独的发布行,例如:
r1.5/develop
项目的所有版本都包含在 Git 存储库中。开始一个新的项目版本包括创建一小组以发布字符串开头的新的长期存在的分支(例如r1.6/develop
,在我们的例子中,r1.6/release
; 不master
,它暗示单个当前良好的可构建状态)。
我们在服务器上为每个项目建立一个中央公共存储库,这将是通过本地存储库remote
链接共享代码的主要途径。推送到此存储库表示代码已准备好供其他人使用。合并RX.Y/develop
然后推送RX.Y/release
分支表示要发布的代码。 feature
, hotfix
, 等。人。分支的处理方式类似。给定发布行的分支合并/提交历史记录清晰易懂。我们不希望典型的 Git 分布式存储库策略有利于避免合并此类存储库的复杂性,随着时间的推移,这些存储库可能会在结构上出现分歧。
在某些 Git GUI(例如 SourceTree)中,此分支结构被识别并显示为分层结构,这有助于从分支结构中了解项目的顶级历史。
很抱歉没有对任何答案进行投票;我在 SO 上的声誉还不是这样做的最低要求。