如何将SVN项目bigProjChange的变更历史合并至bigProj?
解决方案:合并独立目录bigProjChange到bigProj并保留修订记录
完全不需要批量覆盖bigProj主干内容,通过SVN的合并功能可以完整保留bigProjChange的50次修订记录与注释,具体操作步骤如下:
1. 准备本地工作副本
- 检出bigProj的目标目录(以主干trunk为例)到本地:
svn checkout http://你的SVN库地址/bigProj/trunk ./bigProj-trunk - 进入本地工作副本目录:
cd bigProj-trunk
2. 执行合并操作
利用svn merge命令将bigProjChange/trunk从对应bigProj初始版本(r100)到最新版本(r150)的所有变更合并到当前工作副本:
svn merge -r 100:150 http://你的SVN库地址/bigProjChange/trunk .
注:如果bigProjChange并非严格从bigProj的r100复制而来,可添加
--ignore-ancestry参数强制合并,确保所有变更都被应用:svn merge --ignore-ancestry -r 100:150 http://你的SVN库地址/bigProjChange/trunk .
3. 处理合并冲突(若有)
合并后若出现冲突,SVN会自动标记冲突文件:
- 手动编辑冲突文件,解决代码冲突
- 标记冲突已解决:
svn resolve --accept working 冲突文件路径
4. 提交合并结果
提交时SVN会自动关联bigProjChange的修订记录,提交注释可清晰说明合并范围:
svn commit -m "Merge changes from bigProjChange/trunk (r100-r150) into bigProj/trunk"
提交完成后,在bigProj/trunk的日志中可追溯到bigProjChange的原始修订注释与变更记录。
5. 删除冗余目录bigProjChange
确认合并无误后,在版本库中删除该目录:
svn delete http://你的SVN库地址/bigProjChange -m "Remove redundant bigProjChange directory, all changes merged into bigProj/trunk"
可选:先在临时分支测试合并
如果担心直接合并到主干出问题,可先在bigProj下创建临时分支,合并到分支验证后再合并到主干:
# 创建临时分支 svn copy http://你的SVN库地址/bigProj/trunk http://你的SVN库地址/bigProj/branches/merge-test -m "Create test branch for merging bigProjChange" # 检出临时分支并执行合并操作(重复步骤1-4)
内容的提问来源于stack exchange,提问作者BIBD
相关产品推荐
相关产品推荐

