我目前正在开发一个.NET项目,它包含多个逻辑层和多个前端。以下是我们SVN结构的粗略表示:
trunk
---doc
---lib
---src
------console
---------console.vbproj
------domain
---------domain.vbproj
------...
------web
---------web.vbproj
---.sln
我们所有的日常开发都发生在主干 - 这是所有开发人员从/承诺结账的地方。
我正在寻找一种在环境(测试和生产)之间进行干净,轻松部署的方法。
我的想法是创建两个分支,测试和生产,从主干 - 解决方案和所有。由于以下原因,我为自己辩护:
有没有人有过与此相似的解决方案的经验?我缺少任何潜在的陷阱或疏忽吗?
答案 0 :(得分:7)
有没有人有过与此相似的解决方案的经验?
是: - )
我缺少任何潜在的陷阱或疏忽吗?
您将面临这样的问题:随着时间的推移,测试和发布分支将偏离开发环境,因为您很可能不会合并来自主干的每个更改。然后开发人员将在稍微不同的环境中工作,并且通过保持分支同步将浪费很多时间。这称为merge-mania anti-pattern。
我希望一旦你为它实现了所有功能,就建议从每个计划版本的trunk创建一个发布分支。当你分支时两者是平等的。然后让一个团队在发布分支上进行稳定和测试。开发在trunk上并行进行。一旦您的发布被抛光,将修复程序合并回主干。
对每个版本重复此过程。通过这种方式,您将限制合并的数量,并让人们处理始终是最前沿的事情。
我希望这些方面可以帮助您做出决定。该链接还显示了许多其他反模式。阅读所有这些内容,也许你会认识到一些经验教训,并会得到一些提示,以便更好地解决它。
答案 1 :(得分:2)
我们使用相同的布局没有任何问题。确保使用最新的svn版本。由于缺少合并跟踪,因此不应使用1.5之前的版本。
与atlassian的jira(我不是赞助商)一起使用错误跟踪工具,您的设置会变得更加透明。