我在一个新的空 SVN 存储库中重新创建了我的问题:
修订版 1:
- /树干/
- /分支机构/
操作:将文本文件“init.txt”添加到分支“trunk”
修订 2:
- /trunk/init.txt
- /分支机构/
操作:基于主干创建特征分支
修订版 3:
- /trunk/init.txt
- /branches/featureA/init.txt
操作:为分支添加不稳定的特性
修订版 4:
- /trunk/init.txt
- /branches/featureA/init.txt
- /branches/featureA/unstable.txt
操作:通过添加文件“bugfix.conf”修复功能分支中的错误
修订版 5:
- /trunk/init.txt
- /branches/featureA/init.txt
- /branches/featureA/unstable.txt
- /branches/featureA/bugfix.conf
操作:将“bugfix.conf”合并回主干但跳过“unstable.txt”
修订版 6:
- /trunk/ [svn:mergeinfo=/branches/featureA:3,5]
- /trunk/init.txt
- /trunk/bugfix.conf
- /branches/ [无 svn:mergeinfo]
- /branches/featureA/init.txt
- /branches/featureA/unstable.txt
- /branches/featureA/bugfix.conf
操作:在文件“init.txt”trunk处继续工作
修订版 7:
- /trunk/ [svn:mergeinfo=/branches/featureA:3,5]
- /trunk/init.txt(新内容)
- /trunk/bugfix.conf
- /branches/ [无 svn:mergeinfo]
- /branches/featureA/init.txt(旧内容)
- /branches/featureA/unstable.txt
- /branches/featureA/bugfix.conf
操作:尝试将特性分支与主干同步
预期结果: 修订版 8:
- /trunk/ [svn:mergeinfo=/branches/featureA:4]
- /trunk/init.txt(新内容)
- /trunk/bugfix.conf
- /branches/ [svn:mergeinfo=/trunk:6]
- /branches/featureA/init.txt(新内容)
- /branches/featureA/bugfix.conf
第一次尝试
在功能分支上选择“合并一系列修订 -> 所有修订”
错误:“仅当修订版 3 到 7 先前从 /branches/featureA 合并到重新集成源时,才能使用重新集成,但情况并非如此:主干缺少范围 /branches/featureA:4”
为什么 SVN 需要修订 4 也被合并?为稳定和不稳定建立一个单独的分支的全部意义在于使一些提交远离另一个分支。更改(添加文件不稳定.txt)完全独立于其他更改。
第二次尝试
在功能分支上选择“合并一系列修订 -> 修订 2-7”(我可以手动选择的所有修订)
错误:“树冲突:最后一次合并操作尝试添加文件 'bugfix.txt',但该文件在工作副本中被阻塞。”
TortoiseSVN 允许我选择 Revision 6 进行合并,即使合并此更改没有意义,因为它已经包含在目标分支中,因为它最初是在 Revision 5 中提交的。为什么 TortoiseSVN 不能自动处理这个?是否不支持在主干和功能分支之间挑选/合并单个提交?