【问题标题】:SVN product development - how good is this process?SVN 产品开发——这个过程有多好?
【发布时间】:2012-08-10 13:16:18
【问题描述】:

我在图片中添加了一个图例以使其不言自明。

最初,我的项目的主干代码是 1.0 版。

我将使用此版本的代码创建 4 个分支:Vendor-A、Vendor-B、1.1 和 1.2。红线代表这些并行开发分支。供应商特定的开发和发布在供应商分支上进行,供应商分支中的代码永远不会与主干合并。当向供应商发布版本时,这些版本会被标记。

现在,我的问题是:

  1. 这种产品开发方法的准确性如何?
  2. 说,将 1.1 代码合并到主干后,主干位于 1.1 和 1.1 分支结束(过期),之后我发现 1.1 代码中存在错误。现在,我会立即创建一个错误修复分支并将修复提交到主干。那么,是否应该将此错误修复推送到 1.2 分支和供应商分支?还是不应该推送它,因为这些分支正在处理不同版本的 Trunk (1.0)?
  3. 如何在供应商分支下进行开发?比如说,我需要修复 Vendor 分支中的错误,我应该直接将更改提交到 Vendor 分支吗?

我也非常感谢您在重组/重新设计流程方面的建议。

【问题讨论】:

  • bugfix 应该首先重新集成到主干,然后分发到任何需要的地方,以确保您始终拥有一个主副本。其余的对于非敏捷系统变更管理似乎没问题。
  • @Jay,你最近怎么样?

标签: java svn architecture


【解决方案1】:

我觉得没问题。但是,我会简化一点-如果我认为供应商分支从主干定期刷新是正确的,那么您不需要从错误修复分支进行显式合并-只需将错误修复(例如 1.1 错误修复)合并回主干,然后从主干合并到所有供应商分支。

从主干合并到供应商的技巧是准确跟踪已合并的内容。理想情况下,您将合并所有内容,并按时间顺序分块进行。 (我发现使用票证/功能编号标记提交很有用,因此我可以从 svn log 看到需要在特定时间合并的内容。这确保我不会将半个功能发送到另一个分支。

当我提交合并时,我将添加合并字符串(例如“(merge -r1234:2345 -r2667:3123 ../../trunk)”以及合并说明。这真的很有帮助在查看日志(比如在供应商分支上)以发现最早的未合并主干修订时。

然而,我也倾向于在不同的分支上维护 1.0 和 1.1。因此,如果 1.1 分支合并后 1.0 主干变为 1.1,那么在此之前从主干获取分支 1.0 副本可能是合适的。最初的错误修正将在主干 (1.1) 中进行,然后直接合并到从 1.1 分支派生的任何供应商。但是,它可能不适用于从 1.0 派生的供应商(或可能不相关)。在这种情况下,首先将它们应用到 1.0 分支,然后从那里合并到早期版本的所有供应商。

当然,您可能会发现仅与 1.0 相关的错误,并且在 1.1 中不相关或不存在 - 所以这个单独的分支也将提供帮助。

考虑到这种方法,因此最好在可能的情况下将每个供应商从非常旧的版本升级,从而最大限度地减少需要维护的并发版本的数量。无论您是理所当然地这样做,还是作为新许可/合同的一部分这样做,都取决于您的业务。

【讨论】:

  • 关于从 Trunk 合并到供应商分支 - 这是个好主意吗?我的意思是,如果您的 Vendor 分支代码是 v1.0,那么将 v1.1 的 Trunk 代码合并到 Vendor 分支有什么意义?我不会丢失 v1.0 的供应商特定代码吗?
  • 我有预感会被问到,新增了一个板块:)
  • @Jay: ^(不确定你是否会收到上面的通知)。
猜你喜欢
  • 2017-12-21
  • 2010-10-22
  • 2014-10-25
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多