Implement the 'svnadmin build-repcache' CLI and add an ioctl API for building the representation cache.
The implementation iterates over revisions in the specified range and recursively processes the changed nodes, starting from the corresponding revision roots. For each changed node, it ensures that its data and property representations exist in the rep-cache. The nodes are processed in the same order as when committing a transaction (see write_final_rev() function in libsvn_fs_fs/transaction.c), so that the rep-cache.db files are fully consistent.
* subversion/svnadmin/svnadmin.c (cmd_table): Add and document the 'build-repcache' command. (subcommand_build_repcache, build_rep_cache, build_rep_cache_progress_func): New.
* subversion/include/svn_error_codes.h (SVN_ERR_FS_REP_SHARING_NOT_ALLOWED, SVN_ERR_FS_REP_SHARING_NOT_SUPPORTED): New error codes.
* subversion/libsvn_fs_fs/fs_fs.h * subversion/libsvn_fs_fs/fs_fs.c (): Include 'low_level.h'. (svn_fs_fs__build_rep_cache, reindex_node, ensure_representation_sha1): New. Iterate over revisions and recursively process the changed nodes. For each changed node, ensure that its data and property representations exist in the rep-cache.
* subversion/tests/cmdline/svnadmin_tests.py (build_repcache): New test. (test_list): Add the new test.
* subversion/tests/libsvn_fs_fs/fs-fs-private-test.c (): Include 'libsvn_fs_fs/rep-cache.h' and 'libsvn_fs/fs-loader.h'. (build_rep_cache): New test. (test_funcs): Add the new test.
* tools/client-side/bash_completion (_svnadmin): Add the 'build-repcache' command.