svndumpfilter fails with “Invalid copy source path…” error

北城余情 提交于 2019-12-18 12:58:33

问题


I want to move part of my SVN repo offsite, onto an AWS instance & am following this page (Repository Maintenance)

I have taken a dump of the whole repo (Windows commands):

  • svnadmin dump c:\repo > all_repo

Next is to filter it, to include only the project I am interested in (which is called "M1").

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

I know this is correct, as I have done it on some of the other projects already.


On this project, it breaks with the error indicated in the title of this post. The exact wording is:

svndumpfilter: Invalid copy source path '/Personal/Richard/M1_Config'

The process tried to write to a nonexistent pipe.

The folder that the error refers to is a configuration utility that I wrote and submitted under my personal folder, and it is not under the root/m1... folder at all. I do not want to include it in the filtered file, but do not know how to indicate this to the svn commands.

  1. How can I correctly filter for the whole M1 folder and its children, while excluding the Personal/Richard/M1_Config folder entirely?
  2. How can I be sure whether the exported file contains the correct information to correctly recreate the M1 folder on the remote SVN?

回答1:


At some point /Personal/Richard/M1_Config has been copied to the M1 path. The error message is say that it can't perform the copy since the source has been filtered out. Check the revision that svndumpfilter complained about.

You must include the /Personal/Richard/M1_Config path even if you don't want it in the final import. You also need to include the /Personal/Richard and /Personal paths since each resides in it's parent. Your command needs to be:

type all_repo | svndumpfilter include M1 "/Personal" --drop-empty-revs > m1 

If you have other paths, say /Personal/James that aren't needed and you wish to exclude them then you can run a second svndumpfilter to strip them:

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



回答2:


I've tried at least 4 different applications to do that, the only that really worked was using svndumpfilterIN :

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

Here is my full answer on linux.

Here is what I tried and didn't worked :

  • http://furius.ca/pubcode/pub/conf/bin/svndumpfilter3.html (from previous answer)
  • Including the problematic path as said in another previous answer and here. Problem : I still have paths I do not want in the target dump
  • svndumpsanitizer (I still have paths I do not want in the target dump also)



回答3:


I run into the same problem. We have many remotely moved and copied paths in the repository and the only tool that really helped was svndumpsanitizer A single file C program that easily can be compiled on cygwin or Linux and it worked like a charm on a 170 GB incremental dump file with ~160,000 commits.



来源:https://stackoverflow.com/questions/9261625/svndumpfilter-fails-with-invalid-copy-source-path-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!