Presently, dump stream writing is implemented separately in svnadmin dump,
svnrdump dump, and svndumpfilter. This will surely lead to inconsistencies, if
it hasn't already, and a maintenance burden.
For reading, we have a shared dump stream parser, svn_repos_parse_dumpstream3(),
which translates a dump stream to 'svn_repos_parse_fns3_t' vtable calls. We
should also have a shared dump stream writer, using the same vtable. It should
be provided by libsvn_repos and used by 'svnadmin dump', 'svnrdump dump', and
We should then factor out an svn_delta_editor_t to svn_repos_parse_fns3_t
converter from both 'svnadmin dump' and 'svnrdump dump'. We would re-write the
filtering logic of 'svndumpfilter' as a vtable-to-vtable filter between the
parser and the writer.
As well as the obvious benefits such as code re-usability and consistency,
another benefit of this refactoring is that it would be possible to write
round-trip tests of the form (dump stream -> vtable -> dump stream) and (vtable
-> dump stream -> vtable).