寻求SVN小项目开发CM METHODOLOGY的建议

时间:2009-12-23 10:24:23

标签: svn configuration-management

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

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

我的想法是:

  • 每个开发人员都会启动他的私人开发分支
  • 完成后,它将合并到集成分支。在整合部门进一步稳定。
  • 集成完成后,它将合并到主干并标记。

我不清楚:

  • 我们应该开始一个新的私人分支吗? 从那个后备箱,或保持 在同一个私人工作 发展部门?
  • 我看到svn有一种特殊的行为 什么时候重新融入 特别是在主干上。在那儿 有一个好处(或缺点) 特别整合分支,那么?

非常感谢。

2 个答案:

答案 0 :(得分:4)

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

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

典型的Subversion用法使trunk成为所有开发人员在下一个版本上工作的路径。您可以创建分支以执行隔离并行开发,例如bugfix发布,实验性功能和长时间运行的开发任务。我们都知道所有场景都不典型,每个团队的需求都是独一无二的,但在我知道你为什么需要私人开发者分支之前,我会不同意他们是需要的,他们会给你的团队,流程和工具配置。

答案 1 :(得分:1)

如果需要,我将从只有一个带有维护分支的主干分支开始。这通常是一个很好的默认值。这将产生令人惊讶的极少冲突,并将推动发展“经常做出小改变”,这是一件好事。我已经经历了这个团队规模为1-10的开发人员并且它的工作原理。这在Subversion doc。中称为"release branches"

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

为每个开发人员建立一个分支需要你进行大量的合并,这将是痛苦的。


回答你的两个不明确的观点:在将功能分支集成到主干之后,你应该从主干开始创建一个新的功能分支。 Subversion docs建议停止使用旧分支。

  

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

然而 trunk 分支没什么特别之处,它是各种方式的普通分支。它只有一个与其他分支不同的名称。因此,重新融入主干没有特别之处。 Subversion文档讨论了--reintegrate操作,但它引用了以下情况:

  1. 你有分支A (在很多情况下,这将是 trunk
  2. 您从分支A
  3. 创建新的分支B
  4. 您修改分支B ,也可能分支A
  5. 您将更改从分支B 合并或重新集成到分支A