在SVN中,trunk
是主要开发的推荐位置,我将这个约定用于我的所有项目.但是,这意味着行李箱有时不稳定,甚至破损.例如,这发生在
我犯错了
由于SVN的工作方式,主干只需要断开.规范示例是文件重命名 - 您必须先提交任何文件重命名,然后再进行任何进一步修改; 但是,文件重命名可能需要代码重构以反映命名空间或类名更改,因此您基本上需要分两步提交单个逻辑操作.并且在步骤1和2之间打破了构建.
我可以想象会有工具来防止错误地提交某些东西(例如TeamCity和延迟提交),但你真的可以克服第二个问题吗?如果没有,那么在某些分支上进行"狂野开发"会不会更好/branch/dev
,只有当构建相当稳固时才合并到主干?
您的主干应该始终编译,如果您需要进行重大更改,您应该使用分支并稍后合并更改.
阅读SVN本书的这一章:http://svnbook.red-bean.com/nightly/en/svn.branchmerge.html
我建议阅读有关SCM最佳实践的这篇文章.
摘自文章:
有一条主线."主线"或"主干"是永远发展的代码行的分支.主线为几乎所有变更提供了最终目的地 - 维护修复和新功能 - 并且代表了软件产品的主要线性演变.发布代码行和开发代码行从主线分支,分支中发生的工作将传播回主线.
编辑:我还建议阅读SCM模式.
这真的取决于你的环境.在某些情况下,暂时破坏行李箱并不是什么大问题.但如果你和超过2-3人一起工作,这可能不是一个好主意.
在这种情况下,我认为更自由地使用分支是一个好主意.它们很容易设置和重新组合(如果你不让事情变得太不同步).
当然,如果你所有的开发人员都使用相同的分支,你将无法获得任何东西 - 你只需要将你的主干称为/ branch/dev,但是将它打破仍然是一个主要问题!分解分支,以便只有少数开发人员在每个分支上工作,你应该做得很好.
主干是正在进行的开发应该发生的地方.如果每个人都在提交之前测试他们的更改,那么你真的不应该遇到"损坏"代码的问题.一个好的经验法则是在编码更改后进行更新(从repos获取所有最新代码).然后构建并进行一些单元测试.如果一切都建立起来并且有效,你应该很好地检查它.
当您准备好发布时,请创建一个分支.测试可以对分支进行发布验证.如果发现问题,则对分支和主干进行修复,并对分支的新切割进行测试.与此同时,开发人员正在忙着为主干增加新的变化.
因此......测试中发现的问题以及这些琐碎问题的出色解决方案在分支和主干中都是最新的,测试人员可以稳定地使用,并且在测试验证当前版本的同时,开发工作仍在继续.
就像Hanibal总是在"A-Team"中所说的那样,"当计划结合在一起时,我喜欢它."