I have a Subversion repository where a directory was moved once. I want to send to someone only a part of the repository, which includes this directory.
I believe I have read and understood the manual.
What I tried:
svnadmin dump /home/Subversion-Repository | \ svndumpfilter include new-name /new-name /foo/bar/old-name > something.svn svnadmin create /new/repos # Create directories foo/bar and new-name svnadmin load /new/repos < something.svn
But it fails:
<<< Started new transaction, based on original revision 5944 svnadmin: File not found: transaction '5944-4l4', path 'new-name/myfile' * editing path : new-name/myfile ...
What surprises me is that, in the full dump (without going through svndumpfilter), there is a revision which adds the files at the new place:
Node-path: new-name Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10
but svndumpfilter does not keep it. So, the first revision mentioning a file under new-name is 'Node-action: change' and not 'Node-action: add' and it fails. Why?
An Unix shell script to reproduce the problem at will is available.
[I asked the question on the Subversion mailing list but the message was not distributed, probably eaten by an overzealous spam filter.]
UPDATE: I tested Insyte's suggestion. Both svndumpfilter2 and svndumpfilter3 fail. Both do not even check the argument, you can give them a non-existing repository, they would not complain.
With svndumpfilter2, modifying my script to use ${SVNDUMPFILTER2} ${REPOS} other/new-name/bar foo/old-name/bar > ${DUMP}:
<<< Started new transaction, based on original revision 7 svnadmin: File not found: transaction '8-8', path 'other/new-name/bar/myfile' * editing path : other/new-name/bar/myfile ...
With svndumpfilter3, modifying my script to use ${SVNDUMPFILTER3} --untangle=${REPOS} other/new-name/bar foo/old-name/bar > ${DUMP}:
<<< Started new transaction, based on original revision 7 svnadmin: File not found: transaction '8-8', path '/other/new-name/bar/myfile' * editing path : other/new-name/bar/myfile ...