Subversion:每个环境的分支?

时间:2010-09-07 21:26:25

标签: .net svn deployment branching-and-merging

我目前正在开发一个.NET项目,它包含多个逻辑层和多个前端。以下是我们SVN结构的粗略表示:

trunk
---doc
---lib
---src
------console
---------console.vbproj
------domain
---------domain.vbproj
------...
------web
---------web.vbproj
---.sln

我们所有的日常开发都发生在主干 - 这是所有开发人员从/承诺结账的地方。

我正在寻找一种在环境(测试和生产)之间进行干净,轻松部署的方法。

我的想法是创建两个分支,测试和生产,从主干 - 解决方案和所有。由于以下原因,我为自己辩护:

  1. 通过仅从主干到测试分支以及从测试分支到生产分支的合并,我可以完全控制哪些修改流向哪些环境
  2. 我只需查看Subversion中相应分支的日志即可轻松查看每个环境中正在执行的代码

有没有人有过与此相似的解决方案的经验?我缺少任何潜在的陷阱或疏忽吗?

2 个答案:

答案 0 :(得分:7)

  

有没有人有过与此相似的解决方案的经验?

是: - )

  

我缺少任何潜在的陷阱或疏忽吗?

您将面临这样的问题:随着时间的推移,测试和发布分支将偏离开发环境,因为您很可能不会合并来自主干的每个更改。然后开发人员将在稍微不同的环境中工作,并且通过保持分支同步将浪费很多时间。这称为merge-mania anti-pattern

我希望一旦你为它实现了所有功能,就建议从每个计划版本的trunk创建一个发布分支。当你分支时两者是平等的。然后让一个团队在发布分支上进行稳定和测试。开发在trunk上并行进行。一旦您的发布被抛光,将修复程序合并回主干。

对每个版本重复此过程。通过这种方式,您将限制合并的数量,并让人们处理始终是最前沿的事情。

我希望这些方面可以帮助您做出决定。该链接还显示了许多其他反模式。阅读所有这些内容,也许你会认识到一些经验教训,并会得到一些提示,以便更好地解决它。

答案 1 :(得分:2)

我们使用相同的布局没有任何问题。确保使用最新的svn版本。由于缺少合并跟踪,因此不应使用1.5之前的版本。

与atlassian的jira(我不是赞助商)一起使用错误跟踪工具,您的设置会变得更加透明。