13

我想将我的 SVN 存储库的一部分移到一个 AWS 实例上,并且正在关注此页面(存储库维护

我已经采取了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 命令表明这一点。

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

3 回答 3

19

我已经尝试了至少 4 种不同的应用程序来做到这一点,唯一真正有效的是使用 svndumpfilterIN

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

这是我在 linux 上的完整答案

这是我尝试过但没有奏效的方法:

于 2014-03-05T10:13:20.790 回答
16

在某些时候/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
于 2012-11-22T13:06:15.030 回答
2

我遇到了同样的问题。我们在存储库中有许多远程移动和复制的路径,唯一真正有帮助的工具是svndumpsanitizer提交。

于 2017-10-30T12:39:27.237 回答