Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1128409 is being indexed.

Simplify some code in the generic FS loader vtable, in the same

fashion that I did for 'svnrdump load' in r1128138. This should allow

us to more easily rework the storage mechanism for the revision

mapping later without having to revisit all the consumers thereof.

* subversion/libsvn_repos/load-fs-vtable.c

(set_revision_mapping, get_revision_mapping): New helpers.

(renumber_mergeinfo_revs, maybe_add_with_history, close_revision):

Use set_revision_mapping() and get_revision_mapping() instead of

peeking and poking directly into the revision mapping hash.

Make more extensive use of svn_checksum_mismatch_err(). In addition to

improving code reuse, this has the benefit of reducing the amount of translator

effort and eliminating a number of "format is not a string literal" warnings.

* subversion/libsvn_fs_base/tree.c



(svn_fs_base__rep_contents, txn_body_read_rep),



















Use svn_checksum_mismatch_err() where appropriate.

* subversion/tests/cmdline/

(basic_corruption): Update expected error code.

  1. … 11 more files in changeset.
Continue saving the Universe from deprecated svn_path_* API usage.

* subversion/libsvn_repos/delta.c

(svn_repos_dir_delta2, delta_dirs): Replace uses of deprecated

svn_path_* APIs.

* subversion/libsvn_repos/dump.c

(struct edit_baton, struct dir_baton): Tweak comments to indicate

some path types.

(make_dir_baton, open_file, open_directory, verify_directory_entry,

dump_node): Replace uses of deprecated svn_path_* API functions

and other string manipulations in favor of svn_relpath_* work.

* subversion/libsvn_repos/load-fs-vtable.c

(struct parse_baton): Document a path type.

(prefix_mergeinfo_paths, make_node_baton): Replace uses of

deprecated svn_path_* APIs.

(set_node_property): Remove unnecessary convenience variable.

(svn_repos_get_fs_build_parser3): Canonicalize 'parent_dir'.

* subversion/libsvn_repos/node_tree.c

(find_real_base_location): Replace uses of deprecated svn_path_* APIs.

* subversion/libsvn_repos/rev_hunt.c

(svn_repos__prev_location): Replace uses of deprecated svn_path_* APIs.

  1. … 4 more files in changeset.
Just padding my stats.

(Actually, doing my regular trailing whitespace removal, similar to r875968.)

* everywhere:

for extsn in c h cpp java py pl rb; do

sed -i -e 's/[ \t]*$//' `find . -name "*.$extsn" | xargs grep '[ \t]$' -l`


  1. … 166 more files in changeset.
Have all remaining calls of svn_fs_commit_txn() and

svn_repos_fs_commit_txn() use the contract that a commit was

successful if the returned revision is a valid revision number. The

returned error, if any, is no longer used as an indication of commit


* subversion/mod_dav_svn/version.c



Use revision number returned from svn_repos_fs_commit_txn() to

test for a successful commit.

* subversion/mod_dav_svn/lock.c



* subversion/libsvn_repos/load-fs-vtable.c



* subversion/libsvn_repos/commit.c



  1. … 3 more files in changeset.
Fix issue #3755 ("svnadmin and svnrdump should error on non-UTF8 log

messages, authors, etc."). This commit causes 'svnadmin setrevprop',

'svnadmin setlog', and 'svnrdump load' to use codepaths which validate

property changes before they are applied to the target repository.

(Though, I suspect 'svnrdump load' already did this server-side...).

It also teaches 'svnadmin load' to do so by default, but provides a new

--bypass-prop-validation option so that these checks can be avoided at

the administrator's discretion.

NOTE: I took the quick-n-dirty way out on the JavaHL bindings, simply

passing a hardcoded value to svn_repos_load_fs3() in the

SVNRepos.load() function rather than exposing the new boolean

through the API.

* subversion/include/svn_repos.h

(svn_repos_load_fs3, svn_repos_get_fs_build_parser3): Add

'validate_props' parameter.

(svn_repos_load_fs2, svn_repos_get_fs_build_parser2): Update docstrings.

* subversion/include/private/svn_repos_private.h

(svn_repos__validate_prop): New function prototype.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos__validate_prop): Was static validate_prop().

(svn_repos_fs_change_node_prop, svn_repos_fs_change_txn_props,

svn_repos_fs_change_rev_prop4): Track renamed validate_prop() function.

* subversion/libsvn_repos/load-fs-vtable.c

(struct parse_baton): Add 'validate_props' member.

(change_rev_prop, change_node_prop): New helper functions which

account for the desire (or lack thereof) of propery validation.

(set_revision_property, close_revision): Maybe use

svn_repos_fs_change_txn_prop() instead of svn_fs_change_txn_prop(),

depending on whether property validation is desired. Also, use

the change_rev_prop() helper.

(set_node_property, delete_node_property, remove_node_props): Use

change_node_prop() helper.

(svn_repos_get_fs_build_parser3): Add 'validate_props' parameter,

used to populate the similarly named baton member.

(svn_repos_load_fs3): Add 'validate_props' parameter, passed to

updated call to svn_repos_get_fs_build_parser3().

* subversion/libsvn_repos/deprecated.c

(svn_repos_load_fs2): Update call to svn_repos_load_fs3().

(svn_repos_get_fs_build_parser2): Update call to


* subversion/svnrdump/load_editor.c

(set_revision_property, set_node_property, delete_node_property,

close_revision): Validate properties before passing them off to the

RA layer.

* subversion/svnadmin/main.c

(svnadmin__bypass_prop_validation): New enum value.

(options_table): Add record for new --bypass-prop-validation option.

(cmd_table): Make 'load' accept --bypass-prop-validation.

(struct svnadmin_opt_state): Add 'bypass_prop_validation' member.

(set_revprop): Always use svn_repos_fs_change_rev_prop4() now.

(subcommand_load): Update call to svn_repos_load_fs3().

(main): Handle --bypass-prop-validation.

* subversion/tests/cmdline/svntest/

(run_and_verify_load): Add 'bypass_prop_validation' param and handling.

(load_repo): Update call to run_and_verify_load().

* subversion/tests/cmdline/

(load_bad_props): New test.

(test_list): Add reference to new test.

* subversion/tests/cmdline/

(run_dump_test): Add 'bypass_prop_validation' parameter, passed to

updated call to run_and_verify_load().

(copy_bad_line_endings_dump): Update call to run_dump_test(),

with bypass_prop_validation=True.

* subversion/tests/cmdline/

(info_bad_newlines): Update call to load_repo(), with


* subversion/tests/cmdline/

(setup_and_sync): Add 'bypass_prop_validation' parameter, passed to

updated call to run_and_verify_load().

(run_test): Add 'bypass_prop_validation' parameter, passed to

updated call to setup_and_sync().

(copy_bad_line_endings): Update call to run_test(), with


* subversion/bindings/javahl/native/SVNRepos.cpp

(SVNRepos::load): Update call to svn_repos_load_fs3().

  1. … 12 more files in changeset.
Fix error leaks.

* everywhere:

Add missing SVN_ERR() calls.

* subversion/libsvn_repos/load-fs-vtable.c

(make_node_baton): Return an svn_error_t *.

(new_node_record): Track return type change.

* subversion/svnadmin/main.c (main),

subversion/svndumpfilter/main.c (main),

subversion/svnlook/main.c (main),

subversion/svnrdump/svnrdump.c (main),

subversion/svnsync/main.c (main):

Use SVN_INT_ERR() around subcommand_help() or help_cmd().

  1. … 34 more files in changeset.
* subversion/libsvn_repos/load-fs-vtable.c

(apply_textdelta, set_fulltext): Remove null checks before calling

svn_checksum_to_cstring(), as that can handle null since r1040831.

* subversion/libsvn_repos/load-fs-vtable.c

(set_node_property): Add a comment documenting an ugly but necessary cast.

Finish issue #3733 ("API layering violation in repository loading


Bifurcate load.c into load.c and load-fs-vtable.c, keeping the

dumpstream parse logic in load.c, and our specific loader vtable

implementation bits in load-fs-vtable.c. This alone causes build

failures due to illegal knowledge bleed between these blocks of the

API (you know, the complaint noted in this issue), so also made the

additional changes below:

* subversion/libsvn_repos/load.c

(parse_property_block): Move mergeinfo normalization from here ...

* subversion/libsvn_repos/load-fs-vtable.c

(set_node_property): ... to here.

  1. … 1 more file in changeset.