1

我们是一家小型创业公司,从零开始。我们使用 Subversion,存储库位于基于 Web 的服务上。

我熟悉 CVS 并阅读了一些关于 SVN 的介绍,这没什么大不了的。我对 CM方法的参考感兴趣,这将使我们能够在 CM 本身上花费最少的精力,但将使我们能够顺利地工作而不会发生冲突。我确信不需要重新发明轮子,我只是想确认我的想法。

我的想法是:

  • 每个开发人员都开始了他的私人开发分支
  • 完成后,它被合并到集成分支。在集成分支上进行了进一步的稳定化。
  • 集成完成后,将其合并到主干并标记。

我不清楚:

  • 之后我们应该从主干开始一个新的私有分支,还是继续在同一个私有开发分支上工作?
  • 我看到 svn 在专门重新集成到trunk时具有特殊行为。那么,拥有一个特殊的集成分支有好处(或缺点)吗?

多谢。

4

2 回答 2

4

为什么你觉得有必要在私人分支机构进行开发?您不能让您的开发人员在同一个存储库路径中一起工作吗?我问的原因是根据我的经验,大多数认为他们“需要”它的人通常是错误的,并且不了解源代码管理以及 Subversion 的工作原理。我不是在指责你,但我希望你能解释这个要求背后的原因,因为它可能会对未来的建议产生影响。

为了尝试回答您的问题,我可以告诉您,使用私有开发人员分支会给您的管理和工具配置增加不必要的负担。开发人员应该在同一个存储库路径中一起工作,除非有充分的理由,例如使用分支、错误修复版本或实验性工作。造成这种情况的原因有很多,但我首先想到的几个原因是开发是团队的努力,对每个人的变化的可见性,开发过程的简单性,工具配置的简单性和简化的管理。

典型的 Subversion 使用将主干作为所有开发人员在下一个版本中工作的路径。您可以创建分支来为诸如错误修复版本、实验性功能和长期运行的开发任务之类的事情进行独立的并行开发。我们都知道所有场景都不是典型的,每个团队的需求都是独一无二的,但在我知道为什么需要私有开发人员分支之前,我不同意它们是必要的,并且它们会给你的团队、流程和流程增加不必要的负担工具配置。

于 2009-12-23T17:28:50.690 回答
1

如果需要,我只会从带有维护分支的主干分支开始。这通常是一个很好的默认值。这将产生令人惊讶的很少冲突,并将推动开发朝着“经常进行小改动”的方向发展,这是一件好事。我在 1 到 10 名开发人员的团队中经历过这种情况,并且它很有效。这在 Subversion 文档中称为“发布分支” 。

特征分支是另一种常见的操作方式。在这里,您为每个新功能创建一个新分支并将功能合并回主干。一个开发人员可能同时拥有多个功能分支,或者多个开发人员可能同时在同一个功能分支上工作。

为每个开发人员建立一个分支需要您进行大量合并,这会很痛苦。


要回答您的两个不清楚的点:在将功能分支集成回主干后,您绝对应该从主干开始创建一个新的功能分支。Subversion 文档建议停止使用旧分支。

在 Subversion 1.5 中,一旦从分支到主干的 --reintegrate 合并完成,该分支就不再可用于进一步的工作。它无法正确吸收新的主干更改,也无法再次正确重新集成到主干。出于这个原因,如果您想继续处理您的功能分支,我们建议您销毁它,然后从主干重新创建它:

然而,主干分支并没有什么特别之处,它在任何方面都是一个正常的分支。它只是具有与其他分支不同的名称。因此,重新集成到trunk并没有什么特别之处。Subversion 文档谈论--reintegrate操作,但它指的是以下案例:

  1. 您有分支 A (在许多情况下,这将是主干
  2. 你从分支 A创建一个新的分支 B
  3. 您修改分支 B,也可能修改分支 A
  4. 您合并或重新集成从分支 B分支 A 的更改。
于 2009-12-27T13:10:20.217 回答