我想将部分SVN repo移到异地,转移到AWS实例&我正在关注此页面(Repository Maintenance)
我已经获得了整个仓库的dump
(Windows命令):
svnadmin dump c:\repo > all_repo
接下来是过滤它,只包括我感兴趣的项目(称为“M1”)。
type all_repo | svndumpfilter include M1 --drop-empty-revs > m1
我知道这是正确的,因为我已经在其他一些项目上做过了。
在这个项目中,它打破了这篇文章标题中指出的错误。确切的措辞是:
svndumpfilter:无效的复制源路径'/ Personal / Richard / M1_Config'
该过程试图写入不存在的管道。
错误引用的文件夹是我在个人文件夹下编写和提交的配置实用程序,它根本不在root / m1 ...文件夹下。我不想将它包含在过滤文件中,但不知道如何向svn命令指出这一点。
答案 0 :(得分:17)
我已经尝试了至少4种不同的应用程序来做到这一点,唯一真正有用的是使用svndumpfilterIN :
svnadmin dump c:\repo > all_repo
svndumpfilter.py all_repo --repo=c:\repo --output-dump=m1 include M1
这是我的full answer on linux。
以下是我尝试的内容,没有效果:
答案 1 :(得分:15)
某些时候/Personal/Richard/M1_Config
已被复制到M1
路径。错误消息表明它已无法执行复制,因为源已被过滤掉。检查svndumpfilter抱怨的修订版。
即使您不希望在最终导入中使用此路径,也必须包含/Personal/Richard/M1_Config
路径。您还需要包含/Personal/Richard
和/Personal
路径,因为每个路径都位于其父路径中。您的命令必须是:
type all_repo | svndumpfilter include M1 "/Personal" --drop-empty-revs > m1
如果您有其他路径,请说出不需要的/Personal/James
,并且您希望将它们排除,那么您可以运行第二个svndumpfilter来剥离它们:
type m1 | svndumpfilter exclude "/Personal/James" --drop-empty-revs > m1_2
答案 2 :(得分:1)
我遇到了同样的问题。我们在存储库中有许多远程移动和复制的路径,唯一真正有用的工具是svndumpsanitizer单个文件C程序,可以在cygwin或Linux上轻松编译,它就像170 GB增量转储上的魅力一样工作提交约160,000个文件。