
以上是我计划用于组织中的Java项目的结构模拟.你们怎么看待它?它看起来像传统吗?另外,如果你使用project1,在标签下,你可以看到1.0.1,1.0.2等等 - 这些是发布后发布的发布标签.现在,Dev分支下会存在哪种标签?什么时候会被创造?我应该在DevBranch下为每个开发人员创建分支吗?我很迷惑.
你们怎么看待它?
不好.通常情况下,branches 没有进一步含有tags,trunk,branches.Branch就像是trunk一个并行的开发流.通常情况下,您可以通过创建一个分支copy从荷兰国际集团trunk或tag或从另一个branch.除此之外没关系.
它看起来像传统吗?
是的.
现在,Dev分支下会存在哪种标签?
按标签表示名称.你可以给他们一点描述性的名字..喜欢或project1_new_caching_mechanism或project1_1.1_spot_fixes-这表明可能是从释放拷贝1.1标记来解决一些中释放的问题.当您释放此分支时,您希望将这些修复程序合并到其他并行运行的分支和主干.
什么时候会被创造?
每当您找到并行开发方案时.就像你想通过负载测试来改进性能并在不妨碍主要开发分支的情况下为其添加改进的代码.或者是现场修复.或用于功能替换..或多版本支持.
我应该在DevBranch下为每个开发人员创建分支吗?
不 .SVN是集中存储库...(与Git不同),任何SCM的目的是允许多个开发人员同时处理它...你将通过分离每个开发者的回购来违抗目的.
我建议要么这样:
repo--tags
--branches
--trunk--project1
--project2
--project3
Run Code Online (Sandbox Code Playgroud)
...如果您想同时标记和分支所有项目
或这个:
repo--project1--tags
--branches
--trunk
--project2--tags
--branches
--trunk
--project3--tags
--branches
--trunk
Run Code Online (Sandbox Code Playgroud)
..如果您希望能够为每个项目单独进行标记和分支。
不要嵌套标签/分支/主干,这在概念上没有意义。
一个分支属于一个开发周期(即myproject_1_1_sprint_1),一个标签标记了项目在给定时间点的状态(即myproject_1_1_RC03,表示版本1.1的候选版本3)。请注意,这些纯粹是由惯例决定的概念差异。在 SVN 中,分支和标签之间没有技术差异,它们都是项目目录结构的所谓“廉价副本”。
请参阅这篇优秀的文章,描述了 GIT 的成功分支策略,该策略也适用于 SVN 等其他版本控制系统。