svndumpfilter无法完全过滤指定目录,导入时版本报错如何解决?
SVN仓库缩减时svndumpfilter路径过滤异常的解决办法
问题成因
使用svndumpfilter exclude移除trunk/tools子树后,若后续修订版中存在从trunk复制分支时携带的tools子目录属性变更操作,svndumpfilter无法自动识别这些无效路径,导致导入时因路径不存在而中断。
可行解决方案
1. 用svndumpfilter自带参数跳过无效操作(SVN 1.9及以上版本)
执行过滤命令时添加--skip-missing-merge-sources参数,它会自动跳过引用已被过滤路径的操作,避免报错。同时搭配--drop-empty-revs清理过滤后产生的空修订版,--renumber-revs重新编号修订版:
svndumpfilter exclude trunk/tools --skip-missing-merge-sources --drop-empty-revs --renumber-revs < repo.dump > repo.dump.filtered
2. 先创建空路径再过滤(兼容低版本SVN)
先在原始dump文件中添加创建trunk/tools空目录的操作,让后续属性变更有可作用的路径,再执行过滤:
- 打开
repo.dump文件,在第一个修订版的末尾(PROPS-END之后)添加以下内容:
Node-path: trunk/tools Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-END
- 再执行原过滤命令,此时
trunk/tools会被标记为移除,后续针对其子路径的属性变更操作会被正确处理,不会触发路径不存在的错误。
3. 手动清理dump文件中的无效路径操作
直接编辑过滤后的repo.dump.filtered文件,删除所有涉及trunk/tools及其子路径的操作块。注意必须严格遵循SVN dump的格式规范,保证每个修订版的结构完整,防止dump文件失效。
内容的提问来源于stack exchange,提问作者verm-luh
相关产品推荐
相关产品推荐

