GIT Flow 和对并行软件版本的支持

Posted

技术标签:

【中文标题】GIT Flow 和对并行软件版本的支持【英文标题】:GIT Flow and support of parallel software versions 【发布时间】:2016-10-28 09:42:50 【问题描述】:

我的公司正在切换到 GIT(从 SVN)。

我一直在阅读有关 GIT 流程的文章:

http://nvie.com/posts/a-successful-git-branching-model/

而且我不明白,我如何才能使其适应我们当前的发布架构。

当前版本架构

假设我们公司的公司部门发布软件 X。

我们的团队为软件开发包/模块。

有时,对于不同版本的软件,我们不需要更改任何内容,只需修复轻微的错误 =>请参阅包 2。

有时,公司人员会在某些领域提出许多设计更改,我们必须创建特定于版本的调整(代码、文档或配置)=> 请参阅包 1 或 3。

目前在 SVN 中是如何处理的:

使用主干/分支布局。如果你得到特定版本的东西,比如包 1 中的代码,你会发现一个 V12、V14、V15、V16 和 V16 子目录,其中包含版本特定的更改。我们的发布工具(ANT / Jenkins)处理了这种复杂性。

我的问题:

在 GIT 流程中,发布分支被删除、合并回 master 并标记在那里。

您如何处理旧版本中的错误修复(在我的示例客户端 4 中)?

您如何处理想要获取软件包旧版本(客户端 1 升级计划)的客户?

(在现实生活中,我们有 100 多个包和 20 多个客户端)

我已阅读这些内容,但没有找到问题的答案:

Git-flow and master with multiple parallel release-branches

Git flow: Best practice for dealing with minor releases

Multiple development branches with git-flow

感谢您的帮助

【问题讨论】:

【参考方案1】:

根据您的描述,这就是我所说的支持分支。在我使用的一个名为 GitVersion 的实用程序中,我们在这里描述了这些:

https://gitversion.readthedocs.io/en/latest/git-branching-strategies/gitflow-examples/#support-branches

支持分支在 GitFlow 中并没有真正涵盖,但如果您需要同时维护多个主要版本,那么它是必不可少的。您也可以使用支持分支来支持次要版本。如果您只是支持专业,则将您的分支命名为 support/.x(即 support/1.x),以支持未成年人使用 support/..x 或 support/..0。 (即 support/1.3.x 或 support/1.3.0)

【讨论】:

感谢您的反馈。澄清一下:实际上您指出的支持分支策略或多或少对应于 git 流程,但有一个区别:我们不会删除发布分支以支持它们,对吗?人们开始在 SVN 中创建特定于版本的子目录的原因之一是避免创建过多的分支。现在 Git 是另一种工具,可能更好地处理分支,但在您看来,与 SVN 版本特定的子目录策略相比,它如何让生活更轻松? (作为背景,我们也要从Jenkins/Ant切换到Bamboo/Ant) 不,不完全是,或者至少,在我看来不是。即使您开始使用(长期)支持分支,您仍然会有在开发工作期间打开和关闭的发布分支。 SVN 中的一个分支是一个非常重的对象,它基本上复制了整个目录结构。另一方面,git 中的分支是一个轻量级的对象,它们之间的切换非常简单快捷。

以上是关于GIT Flow 和对并行软件版本的支持的主要内容,如果未能解决你的问题,请参考以下文章

是否有可能以及如何使用 git-flow 管理多个版本变体(即自定义应用程序)?

Git介绍,安装,Git+Git flow使用

版本控制概述(Git入门)

ruby 使用rake任务管理Rails应用程序版本号(包括git-flow支持)

Git——版本控制器概述

——Git版本控制工具安装和配置