Subversion,5个开发人员的小团队的最佳实践?

时间:2009-08-25 13:01:19

标签: svn teamcity

我们通过Assembla与CI Team City进行了svn设置。我理解源代码控制,我的团队是新手吗?我们该如何开展工作?现在我们的环境没有按照应有的方式组织。我也试图让Trac为我们的团队工作。我们应该怎样做每个人在那里工作?完成后将更改合并到主干?或者允许他们在Trunk上工作,希望Teamcity会抓到坏东西?

7 个答案:

答案 0 :(得分:5)

<强> 1。我们该如何开展工作? 如果团队不熟悉配置管理,那么您的短期目标应该是让他们以受控方式工作,同时对MINIMAL的工作产生干扰。这意味着您需要将个人配置目标分为短期和长期目标。随着团队的学习,准备重新定义您的长期目标!

<强> 2。现在我们的环境没有按原样组织。 一个好的配置管理员总会这么想。你要做的最后一件事就是让你觉得你更喜欢过程而不是“真正的工作”,所以要继续前进,思考这里的进化,而不是革命。就像软件一样,定义团队流程需要“计划”和良好的沟通。

第3。我也试图让Trac为我们的团队工作。 好动。最初,TRAC将允许您的开发人员查看正在发生的事情。但是,它还有门票,里程碑,修订版,优先级和一堆其他令人困惑的工具,可能会让您的开发人员感到困惑。因此,首先,使用trac作为svn时间轴的视图和方便的差异工具。当他们对工具集本身感到满意时,介绍门票/里程碑等,并准备好在他们没有/不需要时使用这些门票/里程碑。

<强> 4。我们应该怎样做每个人在那里工作?完成后将更改合并到主干? 也许最终。但是,您是否定义了分支/合并将为您解决的问题?请记住,您的团队可能永远不会遇到这类问题。我的建议是等到你遇到问题然后在你的指导下解决它。

<强> 5。或者允许他们在Trunk上工作,希望Teamcity会抓到坏东西? 起初,是的。然后在遇到问题时介绍你所知道的关于CM的所有好东西,而不是之前。

记住 - 您正在构建软件产品,而不是一个出色的配置管理系统。因此,保持简单,只使用工具/流程,让您作为一个团队构建更好的产品。您显然已经了解了配置管理的价值,所以让您的开发人员也要学习。引导他们,不要强迫他们进行。从明显的东西开始(“SVN让我们以受控的方式共享代码”)并使用您的经验从那里开始。祝你好运!

答案 1 :(得分:4)

  

我们应该怎样做每个人在那里工作?完成后将更改合并回主干?

我通常不赞成这一点,因为每个开发人员分支很笨,而且给定开发人员很难通过查看单个分支来了解其他人正在以这种方式工作的内容。您可以通过要求每个人在每次提交时合并回主干来缓解这种情况,但为什么要有一个分支呢?

  

或者允许他们在Trunk上工作,希望Teamcity会抓到坏东西?

我的建议是让开发人员买入制定团队规则:每个人都从中继更新并提交到中继,并且他们在提交之前在本地运行(全部)测试。 Subversion中的分支更有效地用于一组功能,例如与即将发布的版本相对应的功能,而不是功能的单独测试基础。

我认为您的CI应该是一个安全网,提醒您事情不符合您期望的状态。但是,如果您的开发人员明白他们不应该检查首先没有通过的代码,这会有所帮助。

答案 2 :(得分:4)

1 - 更新
2 - 代码
3 - 测试
4 - 更新'n'merge
5 - 测试
6 - 提交

答案 3 :(得分:2)

SVN中的分支并不像在git中那样容易处理。因此,我认为大多数日常工作都应该在主干中进行,只有在分支机构中才会发生大的破坏性变化。

注意:这就是我们在公司工作的方式,效果非常好。

答案 4 :(得分:2)

我发现自己处于类似情况,我们是一个三人小组,我一直在推动源代码控制,尽管我的经验有限,而且我正在学习。我发现这篇文章特别有用:http://www.ericsink.com/scm/source_control.html

如果你的团队尚未阅读,他们肯定应该 - 这是一个很好的起点。

在他们自己的分支中尝试了所有人然后合并到主干方法之后,我可以从我们的错误中告诉你,至少可以说是痛苦和困惑。如果你是最有经验的并且他们是新手,那么你很可能必须承担将所有这些分支合并在一起的责任......并不乐趣。

每个跑出后备箱的人都是迄今为止最不痛苦的方式,我走得太远,说与之前的操作相比,这几乎是一种快乐。您可以从彼此对单独文件所做的改进中受益,差异将自动更新和合并(除非存在冲突)。它还可以让你的团队习惯修改控制的工作方式,慢慢地你会对它的机制变得更加舒适,然后它就值得探索分支和扩展。合并。

简而言之:宝贝步骤: - )

从长远来看,它会得到回报。

答案 5 :(得分:1)

这就是我们使用它的方式:

  1. 所有更改都发生在trunk
  2. 有什么实验性的吗?分支它,与它一起工作直到你满意为止。合并回trunk
  3. 所有主要版本都已标记

答案 6 :(得分:0)

我已经使用过svn并且从不抱怨过。我认为你的策略取决于你正在开发什么样的软件。就我而言,它是许多不同客户使用的产品,可用于关键环境(工厂自动化)中的多个不同版本。

  1. 主干必须始终编译。
  2. 每个版本的标签
  3. 所有修复和次要发展必须在行李箱上完成。
  4. 主要版本的每个版本的分支。
  5. 所有重大进展都在专门的分支机构完成。它们在质量保证后合并。
  6. 所有修补程序也在受支持版本的每个分支上完成。
  7. 它可能看起来很重但它工作正常,可以为很多用户提供服务。对于这种关键软件,每个人都想确定新版本中的内容。

    如果你没有这种约束,1到3就足够了。与分支机构合作有时会很痛苦。

    如果你需要并行运行几个主要项目,你可能需要考虑像mercurial或git这样的DVCS。