Svn 如果不将发布分支合并回主干,我会失去什么好处?

Svn 如果不将发布分支合并回主干,我会失去什么好处?,svn,version-control,merge,Svn,Version Control,Merge,TLDR;我的团队的SVN分支策略不会提交回主干。这感觉像是一种反模式,我无法立即解释原因。这是一个问题吗?这些问题是否足以推动变革 细节- 我的团队一致同意的分支策略是创建每月发布的分支。发布是通过将.ear文件交给另一个团队进行部署来处理的,而不是将它们指向我们的SVN存储库 在进入每个分支的生产之前,我们保留最后一次提交的标记,以供以后使用。我们每天都在开发环境中构建,以捕获破坏性的构建 但是,当我们为下一个发行版创建分支时,我们从现有发行版分支进行分支,并且永远不会提交回主干或与主干交互

TLDR;我的团队的SVN分支策略不会提交回主干。这感觉像是一种反模式,我无法立即解释原因。这是一个问题吗?这些问题是否足以推动变革

细节-

我的团队一致同意的分支策略是创建每月发布的分支。发布是通过将.ear文件交给另一个团队进行部署来处理的,而不是将它们指向我们的SVN存储库

在进入每个分支的生产之前,我们保留最后一次提交的标记,以供以后使用。我们每天都在开发环境中构建,以捕获破坏性的构建

但是,当我们为下一个发行版创建分支时,我们从现有发行版分支进行分支,并且永远不会提交回主干或与主干交互。分支后对分支版本的任何更改都将合并,直到上一个版本最终确定

Trunk
|\
| April
|      \
|       May
.          \
.           June...
.
.
我们在项目分支上遇到了一些问题,这些分支被合并到预期将在其中推出的版本中

我们不使用特性分支,因此从发布中回滚或删除更改是一件麻烦事,因为每个发布分支都是dev和bug修复分支


除此之外,是否存在受此分支策略影响的基本SVN功能、对存储库的不良影响或其他风险?

如您所述,我可以想象“回滚或删除版本中的更改是一件麻烦事”,但仍然可行

使用此SVN设置雇用新开发人员时,您将失去宝贵的时间。他们将很难学习、贡献和排除此存储库的故障。正如拥有可读的代码很重要一样,拥有可读的存储库也很重要

如果您的团队在存储库方面遇到问题,那么就很难向书籍、网站和其他人寻求外部建议

如果您想将任何类型的第三方软件合并到存储库中,这可能会很困难,因为使用主干的SVN约定已被忽略

您的存储库组织似乎受到每月节奏的尴尬限制。如果您需要在一个月内进行两次代码滚动,该怎么办?你会创建半个月的分支吗

您的团队缺少SVN标记的概念。标签为最终版本,不可编辑。这些标签通常具有类似Application-1.2.3的版本号。版本号是三个整数:MAJOR.MINOR.PATCH。这向开发人员指出应用程序中的更改有多大,以及一个版本与另一个版本的差异有多大

看看这本在线书,我发现它很有用:

正如您所说,我可以想象“从发布中回滚或删除更改是一件麻烦事”,但仍然可行

使用此SVN设置雇用新开发人员时,您将失去宝贵的时间。他们将很难学习、贡献和排除此存储库的故障。正如拥有可读的代码很重要一样,拥有可读的存储库也很重要

如果您的团队在存储库方面遇到问题,那么就很难向书籍、网站和其他人寻求外部建议

如果您想将任何类型的第三方软件合并到存储库中,这可能会很困难,因为使用主干的SVN约定已被忽略

您的存储库组织似乎受到每月节奏的尴尬限制。如果您需要在一个月内进行两次代码滚动,该怎么办?你会创建半个月的分支吗

您的团队缺少SVN标记的概念。标签为最终版本,不可编辑。这些标签通常具有类似Application-1.2.3的版本号。版本号是三个整数:MAJOR.MINOR.PATCH。这向开发人员指出应用程序中的更改有多大,以及一个版本与另一个版本的差异有多大

看看这本在线书,我发现它很有用:

为什么要分支?你可以省去这项工作,只需在主干上进行开发。你们在树干上干什么?为什么要分枝?你可以省去这项工作,只需在主干上进行开发。你们在后备箱上干什么?