【发布时间】:2010-09-30 19:15:15
【问题描述】:
我想将一个目录从一个大型 Subversion 存储库拆分为一个自己的存储库,并保留该目录中文件的历史记录。
我先尝试了常规的方法
svnadmin dump /path/to/repo > largerepo.dump
cat largerepo.dump | svndumpfilter include my/directory >mydir.dump
但这不起作用,因为多年来该目录已被移动和复制,并且文件已移入和移出它到存储库的其他部分。结果是很多这样的:
svndumpfilter: Invalid copy source path '/some/old/path'
接下来我尝试将那些出现时的/some/old/path 包含在内,并且在包含一长串文件和目录之后,svndumpfilter 完成,但是导入生成的转储不会产生与当前目录相同的文件有。
那么,如何在保留历史记录的同时正确地从该存储库中拆分目录?
编辑:我特别希望trunk/myproj 成为新存储库中的主干加上让新存储库不包含其他旧东西,即。任何人都不应该在拆分之前更新到旧版本并获取/查看文件。
我尝试过的 svndumpfilter 解决方案可以做到这一点,遗憾的是它不可行,因为路径/文件已经移动了。 solution by ng 是不可接受的,因为它基本上是克隆+删除额外内容,保留所有历史记录,而不仅仅是相关的 myproj 历史记录。
【问题讨论】:
-
你能解决这个问题吗?
-
实际上没有,尽管我需要尝试 auriarte 建议的第 3 方脚本。该项目现在已经冻结了一段时间,因此我也一直在忽略这个问题,但我会尝试一下。
-
我在 svn 1.5 的 17G 存储库中遇到了同样的问题。我必须排除 15 条不同的路径,并且从我们拥有的 12000 修订号 1259 上中断。呵呵!!!
标签: svn repository split