SVN合并问题求助:分支提交的变更未被合并至主干
排查与解决SVN合并后变更未同步的问题
这种合并成功但目标分支没拿到变更的情况我之前也踩过坑,咱们一步步来定位和解决:
1. 先确认合并范围是否命中目标修订
首先得检查你执行合并时的操作是否包含了r554267和r554268这两个版本:
- 如果用命令行合并,你当时的命令是不是类似
svn merge ^/branches/85 trunk?这种默认是合并从上次合并点到分支最新HEAD的变更,如果这两个修订之前被误标记为已合并,就会被跳过。 - 你可以用命令快速验证这两个修订是否已经被记录为合并到主干:
如果没有输出,说明这两个修订确实没被纳入合并范围。svn propget svn:mergeinfo trunk | grep -E "554267|554268"
2. 检查是否存在被自动跳过的冲突
有些SVN GUI工具在合并时遇到冲突,会默认标记为"已解决"但实际没应用变更。你可以直接对比分支和主干的目标文件,确认变更是否真的没同步:
svn diff ^/branches/85/[你的文件路径1] ^/trunk/[你的文件路径1] svn diff ^/branches/85/[你的文件路径2] ^/trunk/[你的文件路径2] svn diff ^/branches/85/[你的文件路径3] ^/trunk/[你的文件路径3]
3. 手动指定修订版本进行合并
如果确认这两个修订没被合并,直接针对性合并是最直接的解决方式:
# 切换到主干本地工作目录 cd trunk # 合并指定的两个修订 svn merge -c 554267,554268 ^/branches/85
执行后检查文件变更,解决可能的冲突,然后提交:
svn commit -m "手动合并分支85的r554267、r554268到主干"
4. 排查mergeinfo属性异常
如果上面的方法还是不行,可能是SVN的svn:mergeinfo属性出现了异常(比如误标记了已合并)。你可以先清理主干的mergeinfo属性(操作前建议备份或在测试环境验证):
svn propdel svn:mergeinfo trunk
之后重新执行合并操作,或者再次手动合并指定修订。
内容的提问来源于stack exchange,提问作者devops
相关产品推荐
相关产品推荐

