2012-02-13 31 views
12

我想将我的SVN回购异地的一部分,失败到一个AWS实例&我下面这个页面(Repository Maintenance过滤流与“无效的复制源路径...”错误

我采取的一个dump整个回购(Windows命令):

  • svnadmin dump c:\repo > all_repo

接下来是对其进行过滤,只包括我感兴趣的(这被称为 “M1”)的项目。

  • type all_repo | svndumpfilter include M1 --drop-empty-revs > m1

我知道这是正确的,因为我已经做了一些已经在其他项目。


在这个项目上,它打破了这篇文章标题中指出的错误。确切的写法是:

过滤流:无效的复制源路径“/个人/理查德/ M1_Config”

过程试图写入到不存在的管道。

错误引用的文件夹是我在我的个人文件夹下编写并提交的配置实用程序,它根本不在root/m1 ...文件夹下。我不想将它包含在过滤的文件中,但不知道如何将它指示给svn命令。

  1. 如何正确过滤整个M1文件夹及其子项,同时完全排除个人/ Richard/M1_Config文件夹?
  2. 如何确保导出的文件是否包含正确的信息,以正确重新创建远程SVN上的M1文件夹?

回答

14

在某点/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并希望将它们排除在外,那么你可以运行第二个过滤流剥夺他们:

type m1 | svndumpfilter exclude "/Personal/James" --drop-empty-revs > m1_2 
+0

有没有一种方法可以找出女巫零件必须包含的东西。我正在尝试和错误的时刻。 – 2014-02-04 07:37:10

+0

您可以搜索变更集并查找影响感兴趣路径的“从路径复制”。你可以通过转储文件进行文本搜索,或者使用svnlook来做到这一点。 – Craig 2014-02-05 12:16:11

16

我试过至少4个不同的应用程序做,只有果然奏效使用svndumpfilterIN

svnadmin dump c:\repo > all_repo 
svndumpfilter.py all_repo --repo=c:\repo --output-dump=m1 include M1 

这是我的full answer on linux

这里是我的尝试和没有工作

+0

说真的,感谢这篇文章。花了很多时间后,这是唯一完美无瑕的工作。 – rwb 2014-04-16 07:14:27

+0

这个脚本完美工作... – michabbb 2014-06-16 23:52:58

+0

工作对我来说也很好。 – 2015-06-25 18:39:58

0

我遇到了同样的问题。我们在存储库中有很多远程移动和复制的路径,并且真正有帮助的唯一工具是svndumpsanitizer单个文件C程序可以很容易地在cygwin或Linux上编译,并且它像一个170 GB增量转储文件上的魅力一样工作,约160,000提交。

相关问题