Checkout
Stefan Sperling
committed
on 31 Mar
Introduce 'svnadmin build-repcache' command.

Implement the 'svnadmin build-repcache' CLI and add an ioctl API for building
the representati… Show more
Introduce 'svnadmin build-repcache' command.

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/include/private/svn_fs_fs_private.h

 (svn_fs_fs__ioctl_build_rep_cache_input_t,

  SVN_FS_FS__IOCTL_BUILD_REP_CACHE): New.

* subversion/libsvn_fs_fs/fs.c

 (fs_ioctl): Handle SVN_FS_FS__IOCTL_BUILD_REP_CACHE.

* 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.

Patch by: Denis Kovalchuk <denis.kovalchuk@visualsvn.com>

Show less