Hi Bert, thanks for your reply. The problem that I've described is not about revision numbers, it's about copied nodes.
Suppose we have an repository 'repo' containing nodes '/A' and '/B', where '/B' (or some path under '/B') was create by copying of '/A' (or some path under '/A'). Now, if we run 'svndumpfilter include /B' against dump of 'repo', we will get an error: [[ ... svndumpfilter: E200003: Invalid copy source path '/A' ]] This happens because 'svndumpfilter' tries to add copy of '/A', but node '/A' is not included in destination dump. On Wed, Oct 12, 2016 at 2:10 PM, Bert Huijben <b...@qqmail.nl> wrote: > > >> -----Original Message----- >> From: Sergey Raevskiy [mailto:sergey.raevs...@visualsvn.com] >> Sent: woensdag 12 oktober 2016 12:44 >> To: Subversion Development <dev@subversion.apache.org> >> Subject: [PATCH] Add '--include' and '--exclude' options to 'svnadmin dump' >> >> Hi! >> >> I've attached a patch that adds '--include/--exclude' options to 'svnadmin >> dump'. These options work similarly to 'svndumpfilter include/exclude' >> but provide proper handling of 'copy from' paths. >> >> Consider the following example with svndumpfilter: >> [[ >> $ svnadmin create /repo >> $ svn mkdir -m "" file:///repo/A >> $ svn copy -m "" file:///repo/A file:///repo/B >> $ svnadmin dump /repo | svndumpfilter include /B > dump > > I don't see a --renumber-revs on your invocation of svndumpfilter. Did you > try these options to see if these resolve your problem (they should) > > $ svndumpfilter help include > include: Filter out nodes without given prefixes from dumpstream. > usage: svndumpfilter include PATH_PREFIX... > > Valid options: > --drop-empty-revs : Remove revisions emptied by filtering. > --drop-all-empty-revs : Remove all empty revisions found in dumpstream > except revision 0. > --renumber-revs : Renumber revisions left after filtering. > --skip-missing-merge-sources : Skip missing merge sources. > --targets ARG : Read additional prefixes, one per line, from > file ARG. > --preserve-revprops : Don't filter revision properties. > --quiet : Do not display filtering statistics. > --pattern : Treat the path prefixes as file glob patterns. > > > Bert > >> ... >> Revision 0 committed as 0. >> Revision 1 committed as 1. >> svndumpfilter: E200003: Invalid copy source path '/A' >> ]] >> >> The 'svnadmin dump' with proposed include/exclude options can handle this >> use >> case properly: >> [[ >> $ svnadmin dump /repo --include /B > dump >> * Dumped revision 0. >> * Dumped revision 1. >> * Dumped revision 2. >> ]] >> >> The proposed options are implemented using 'svn_repos_authz_func_t' and the >> not-included copy sources are hidden by the 'svn_repos' layer. >> >> Some usage examples for the proposed options: >> [[ >> $ svnadmin dump repos --include /calc > calc-dumpfile >> ... >> $ svnadmin dump repos --include /calc --include /calendar > dumpfile >> ... >> $ svnadmin dump repos --exclude /secret > dumpfile >> ... >> $ svnadmin dump repos --include /calc --exclude /calendar > dumpfile >> svnadmin: E205000: Try 'svnadmin help' for more info >> svnadmin: E205000: '--exclude' and '--include' options cannot be used >> simultaneously >> >> $ svnadmin dump repos --include /cal* --pattern > dumpfile >> ... >> ]] >> >> Log message: >> >> [[ >> Add '--include' and '--exclude' options to 'svnadmin dump'. >> >> * include/svn_repos.h >> (svn_repos_dump_filter_func_t): New. >> (svn_repos_dump_fs4): Update function signature and comment. >> (svn_repos_dump_fs3): Update comment. >> >> * libsvn_repos/deprecated.c >> (svn_repos_dump_fs3): Update caller. >> >> * libsvn_repos/dump.c >> (write_revision_record): Call to svn_repos_fs_revision_proplist() (with >> AUTHZ_FUNC) instead of svn_fs_revision_proplist2() to filter revision >> properties as well as revisions. Update comment. >> (dump_filter_baton_t, >> dump_filter_authz_func): New. >> (svn_repos_dump_fs4): Initialize and pass AUTHZ_FUNC and AUTHZ_BATON >> to >> the repos layer API if FILTER_FUNC is specified by caller. >> >> * subversion/svnadmin/svnadmin.c >> (svnadmin__cmdline_options_t): Add enum values for new options. >> (options_table): Add new options. >> (cmd_table): Add new options to 'dump' subcommand. >> (svnadmin_opt_state): Add new fields to represent new options. >> (ary_prefix_match): New. Copied from svndumpfilter. >> (dump_filter_baton_t, >> dump_filter_func): New. >> (subcommand_dump): Initialize FILTER_BATON. Pass DUMP_FILTER_FUNC >> and a >> pointer to FILTER_BATON to svn_repos_dump_fs() if any filtering prefixes >> specified. >> (sub_main): Handle new options. >> >> * subversion/tests/cmdline/svnadmin_tests.py >> (dump_exclude, >> dump_exclude_copysource, >> dump_include, >> dump_not_include_copysource, >> dump_exclude_by_pattern, >> dump_include_by_pattern, >> dump_exclude_all_rev_changes, >> dump_invalid_filtering_option): New. >> (test_list): Add new tests to table. >> >> * subversion/tests/libsvn_repos/dump-load-test.c >> (test_dump_bad_props): Update caller. >> >> Patch by: sergey.raevskiy{_AT_}visualsvn.com >> ]] >