【发布时间】:2021-01-14 04:00:48
【问题描述】:
我学习了一些关于如何使用分支/合并在团队中工作的 SVN 教程,但在流程中仍然无法正常工作。 我在局域网中使用 Tortoise SVN + Visual SVN 服务器。有 N 个开发者。
场景 1:分支在主干内
- Developer-A 从 http://svn-server/OurProject 签出“OurProject”生产版本。一开始没有分店。
- Developer-A 在主路径下创建“Branch-A”,所以 http://svn-server/OurProject/Branch-A。他将工作文件夹切换到分支并开始编码。他添加了一些文件并编辑了一些其他文件。他将更改提交到分支。
- Developer-B 对他同事的工作和他的分支一无所知,所以他只是从 http://svn-server/OurProject 中检查了整个“OurProject”。这导致 Developer-B 检查整个“OurProject”结构,以及“Branch-A”文件夹!这对我来说是第一个奇怪的事情。
- Developer-B 在路径 http://svn-server/OurProject/Branch-B 处启动一个新的“Branch-B”分支并开始编码。
- 开发人员 B 完成编码,而开发人员 A 仍在工作。他将他的 Branch-B 合并到项目根目录中并提交。这导致开发人员 B 从主干中删除了“Branch-A”! 不,我认为这不是正确的解决方案。
场景2:分支在主干之外(从分支合并到主干)
- Developer-A 从 http://svn-server/OurProject/trunk 查看“OurProject”生产版本。一开始没有分店。
- Developer-A 在“branches”子文件夹下创建“Branch-A”,所以 http://svn-server/OurProject/branches/Branch-A。他将工作文件夹切换到分支并开始编码。他添加了一些文件并编辑了一些其他文件。他将更改提交到分支。
- Developer-B 对他同事的工作和他的分支一无所知,所以他只是从 http://svn-server/OurProject/trunk 查看整个“OurProject”。这导致 Developer-B 只检查生产代码,而看不到同事的分支。很好。
- Developer-B 在路径 http://svn-server/OurProject/branches/Branch-B 处启动一个新的“Branch-B”分支并开始编码。
- 开发人员 B 完成编码,而开发人员 A 仍在工作。他将他的 Branch-B 合并到项目根目录(从分支到主干)并提交。这会导致主干覆盖所有“Branch-B”修改!不对。
场景 3:分支在主干之外(从主干合并到分支)
...(与上一个场景相同,除了最后一点)
- 开发人员 B 完成编码,而开发人员 A 仍在工作。他将他的 Branch-B 合并到项目根目录(从主干到分支)并提交。这会导致 Tortoise SVN 冲突警告。我选择“标记为已解决,接受当前工作副本状态”。
- Developer-B 切换到主干,SVN 删除我的新分支文件,我的所有分支修改再次丢失。
经过数十次尝试后,我想知道哪个是真正的流程。 感谢您的帮助
【问题讨论】:
标签: svn version-control tortoisesvn branching-and-merging