我看过几篇描述最佳svn布局的文章:
为什么这是推荐的布局以及分支和标签文件夹应该用于什么?
答案 0 :(得分:4)
/ Trunk是应用程序代码的基本文件夹。您可以在这里处理下一个版本/发行版。
/ Branch是一个文件夹,允许您选择一个时刻,并允许您沿着与/ Trunk不同的开发路径前进。 / Branch的一个常见用途是为您的开发团队提供对生产中存在的应用程序的当前快照的访问权限,即。 /分公司/生产维护。
这种“分支”概念允许您的团队构建对生产的修复/增强,而不会影响当前正在/ Trunk中发生的下一版本的正在进行的工作。分支也可以是一小部分功能,在大型团队中,允许开发人员以原子方式工作,并在未来的某个时刻合并回/ Trunk。
/ Tags是一个文件夹,允许您拍摄应用程序的快照,并使用这些特定的“构建”。这使您的团队在测试和查找构建之间的差异方面具有灵活性。您经常会在/ Branch中找到一个与您的构建相关的命名约定,即。 /Branch/2.0.0,/Branch/2.0.1,/Branch/3.1.0,依此类推。命名惯例取决于您和您的团队;保持一致!
答案 1 :(得分:2)
简而言之 - branches
和tags
允许您并行保留多个版本的源代码。
典型情况是将开发保持在trunk
并不时(即每个里程碑/版本)创建一个具有自己名称的新branch
。
这种方法的主要优点是将新/野外开发与测试/发布版本分开,该版本应该是稳定的并且仅需要(在理想世界中)修复。
要将更改(即修复错误)从branch
复制到trunk
,您可以使用merge来自两个分支的{em>合并更改{{1} }也是一个分支)。
此外(在较新版本的SVN中)SVN保留合并变更集的历史记录。
有关于branching strategies的很好的stackoverflow问题。