Subversion:每个环境的分支?

TMc*_*emy 5 .net svn deployment branching-and-merging

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

trunk
---doc
---lib
---src
------console
---------console.vbproj
------domain
---------domain.vbproj
------...
------web
---------web.vbproj
---.sln
Run Code Online (Sandbox Code Playgroud)

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

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

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

  1. 通过仅从中继到测试分支以及从测试分支到生产分支的合并,我可以完全控制哪些修改流向哪些环境
  2. 通过简单地查看Subversion中相应分支的日志,我可以很容易地看到每个环境中正在执行的代码

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

jde*_*aan 7

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

是的:-)

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

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

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

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

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