Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates
Fix Doxygen mark-up.

* subversion/include/svn_error.h

(svn_error_quick_wrap): Use '@a ' not just '@' to refer to a parameter.

* subversion/include/svn_x509.h

(svn_x509_oid_to_string): Same.

  1. … 1 more file in changeset.
* subversion/include/svn_error.h

(svn_error_quick_wrap): Document behaviour if child is SVN_NO_ERROR.

Suggested by: rhuijben

* subversion/include/svn_error.h

(svn_error_quick_wrap, svn_error_quick_wrapf): Fix misleading docstrings.

Make all ra layers and fs backends consistently report errors on invalid

and out of date revisions passed to the lock api: in most cases via the


* subversion/include/svn_error.h

(SVN_ERR_IS_LOCK_ERROR): Implement the same behavior as implemented

inside the filesystems.

* subversion/libsvn_fs_base/lock.c

(includes): Add revs-txns.h.

(svn_fs_base__lock): Check revisions against youngest like in fsfs.

* subversion/libsvn_fs_fs/lock.c

(check_lock): Add youngest_rev argument and use it for sanity check.

(lock_body): Update caller.

* subversion/libsvn_fs_x/lock.c

(check_lock): Add youngest_rev argument and use it for sanity check.

(lock_body): Update caller.

* subversion/libsvn_ra_serf/lock.c

(run_locks): Assume that 404 errors likely have good server errors, to

avoid duplicate errors in the error chain.

* subversion/mod_dav_svn/util.c

(dav_svn__convert_err): Report SVN_ERR_FS_NO_SUCH_REVISION as status 404

(invalid target) instead of 500 (server error).

  1. … 5 more files in changeset.
* subversion/include/svn_error.h

(svn_error_quick_wrapf): Add doxygen @since tag.

Introduce svn_error_quick_wrapf(), a variable-arguments version of

svn_error_quick_wrap(). Use it to simplify previous uses of the latter.

* subversion/include/svn_error.h

* subversion/libsvn_subr/error.c

(svn_error_quick_wrapf): New function and macro of the same name.

* subversion/libsvn_fs_fs/hotcopy.c

(hotcopy_body): Use it.

* subversion/libsvn_subr/io.c


svn_io_open_unique_file3): Use it.

* subversion/libsvn_wc/wc_db.c

(read_info): Use it.

* subversion/libsvn_wc/wc_db_wcroot.c

(svn_wc__db_wcroot_parse_local_abspath): Use it.

* subversion/svnbench/svnbench.c

(sub_main): Use it.

* subversion/svn/svn.c

(sub_main): Use it.

  1. … 7 more files in changeset.
* subversion/include/svn_error.h

(svn_error_root_cause): Document that the returned error should not

be cleared, just like in svn_error_find_cause.

The standard _dup() function pattern takes a const-qualified pointer to an

object and returns a mutable copy. Add 'const' to a few that didn't follow

that pattern.

(Note: This is one of the few changes that can be made to a released API

without breaking its API and ABI compatibility guarantees.)

* subversion/include/svn_config.h,


(svn_config_dup): Add 'const' as above.

* subversion/include/svn_error.h,


(svn_error_dup): Add 'const' as above.

* subversion/libsvn_fs_base/dag.h,


(svn_fs_base__dag_dup): Add 'const' as above.

* subversion/libsvn_fs_x/index.h,


(svn_fs_x__p2l_entry_dup): Add 'const' as above.

  1. … 7 more files in changeset.
Add 'const' to the error input parameter of some error-related APIs that

don't clear or modify the error, for clarity.

A follow-up to r1584610 which did this to a function in svnserve, which gave

warnings indicating we need to do the same to some lower level functions.

* subversion/include/private/svn_error_private.h,





svn_error__is_tracing_link): Make the input error pointer 'const'.

  1. … 2 more files in changeset.
Merge the fsfs-lock-many branch to trunk. This introduce multiple

path lock and unlock at the FS level and connects it up over ra_local

and ra_svn, and also uses it post-commit to release locks. A summary

of the branch changes:

* subversion/include/svn_fs.h

(svn_fs_lock_target_t, svn_fs_lock_result_t,

svn_fs_lock2, svn_fs_unlock2): new.

* subversion/include/svn_repos.h

(svn_repos_fs_lock2, svn_repos_fs_unlock2): new.

* subversion/include/svn_error.h


* subversion/libsvn_fs/fs-loader.c

(svn_fs_lock2, svn_fs_unlock2): New.

* subversion/libsvn_fs/fs-loader.h

(fs_vtable_t): Change lock and unlock parameters.

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_x/lock.c

(svn_fs_fs__lock, svn_fs_fs__unlock): New multiple path implementation.

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__lock, svn_fs_base__unlock): Iterate over paths.

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__lock, svn_fs_fs__unlock): Change parameters.

* subversion/libsvn_fs_x/lock.h

(svn_fs_x__lock, svn_fs_x__unlock): Change parameters.

* subversion/libsvn_fs_base/lock.h

(svn_fs_base__lock, svn_fs_base__unlock): Change parameters.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_lock2, svn_repos_fs_unlock2): New.

* subversion/libsvn_repos/repos.c


template text.

* subversion/libsvn_ra_local/ra_plugin.c

(deltify_etc, svn_ra_local__lock, svn_ra_local__unlock): Use new API.

* subversion/mod_dav_svn/version.c

(release_locks): Use new API.

* subversion/svnserve/serve.c

(unlock_paths, lock_many, unlock_many): Use new API.

* subversion/libsvn_subr/log.c

* subversion/libsvn_fs_fs/lock.h

(svn_fs_fs__lock, svn_fs_fs__unlock,

svn_log__lock_one_path, svn_log__unlock_one_path): Change parameter.

* subversion/libsvn_client/locking_commands.c

(store_locks_callback): Tweak error handling.

* subversion/tests/libsvn_fs/locks-test.c

(lock_multiple_paths): New test.

* subversion/tests/libsvn_ra/ra-test.c

(lock_test): New test.

* subversion/tests/cmdline/

(authz_locking): Tweak expectations.

* subversion/tests/cmdline/

(block_unlock_if_pre_unlock_hook_fails, lock_hook_messages): Tweak


(failing_post_hooks): New.

  1. … 26 more files in changeset.
* subversion/include/svn_error.h

(svn_handle_error2): Improve documentation.

* subversion/libsvn_subr/object_pool.c

(exit_on_error): Add arguments. Use existing malfunction infrastructure instead

of assuming that every libsvn_subr user is a commandline application.

(object_ref_cleanup): Update caller.

  1. … 1 more file in changeset.
* subversion/include/svn_error.h

(SVN_INT_ERR): Update the doc string for clarity. Declare as deprecated,

as it no longer suits our needs nor general third-party needs.

Revert r1461775.


* subversion/include/svn_error.h

(SVN_ERR_ASSERT): Re-implement macro without using SVN_ERR_ASSERT_E to

workaround pre-processor issues in VC10.

* subversion/include/svn_error.h:

(SVN_ERROR_IN_CATEGORY): Linking to apr_status_t in the documentation which

will never be in our documentation is bogus, remove it.

Followup to r1481827: don't spam stderr by default for API consumers who are

not going to 'just abort()'.

This may introduce compiler warnings on windows, but those were deemed to be


Suggested by: rhuijben

Review by: rhuijben

* subversion/include/svn_error.h

(svn_error_get_malfunction_handler): New API.

* subversion/libsvn_subr/error.c

(svn_error_get_malfunction_handler): Implement it.

* subversion/libsvn_fs/fs-loader.c


Only use stderr if the next line will abort().

  1. … 2 more files in changeset.
* subversion/include/svn_error.h

(svn_error_symbolic_name): Fix punctuation.

* subversion/include/svn_error.h

(svn_error_symbolic_name): Further clarify docstring.

Suggested by: julianf

* subversion/include/svn_error.h

(svn_error_symbolic_name): Fix typo in docstring.

* subversion/include/svn_error.h

(svn_error_symbolic_name): Clarify docstring.

Suggested by: julianf

Implement in C.

* subversion/include/svn_error.h

(svn_error_symbolic_name): Declare new API.

* subversion/include/svn_error_codes.h


Include the error name as a string, in SVN_ERROR_BUILD_ARRAY mode only.

* subversion/libsvn_subr/error.c

(struct err_defn): Add a member, also add comments.

(svn_error_symbolic_name): Implement new API.

* subversion/tests/libsvn_subr/error-test.c

(test_error_symbolic_name): New test.

(test_funcs): Run it, passing.

  1. … 3 more files in changeset.
* subversion/include/svn_error.h

(SVN_ERR_ASSERT): Make this just a wrapper around SVN_ERR_ASSERT_E.

Make the prototypes for svn_error__locate and svn_error__trace always

visible when compiling the definitions.

* subversion/include/svn_error.h

(svn_error__locate): Wrap with SVN_ERR__TRACING instead of SVN_DEBUG.

* subversion/libsvn_subr/error.c: Ensure SVN_ERR__TRACING is defined.

  1. … 1 more file in changeset.
Remove SVN_ERR__TRACED from the public headers. No-one should be able to create

traces without calling svn_error_trace, so there's no reason to expose this

private symbol. Hiding it incidentally allows us to slightly optimize the

is-tracing-link predicate.

* subversion/include/svn_error.h (SVN_ERR__TRACE): Remove.

* subversion/libsvn_subr/error.c (error_tracing_link): New static string.

(svn_error__trace): Use make_error_internal instead of svn_error_quick_wrap.

(svn_error__is_tracing_link): Use direct pointer comparison in predicate.

* subversion/tests/libsvn_subr/error-test.c (test_error_purge_tracing):

Manually construct tracing-only error chain without relying on the

(now-gone) SVN_ERR__TRACED; instead, rely on insider info about the


[Optimization reverted in r1421901.]

  1. … 2 more files in changeset.
Fix error tracing to record file/line properly.

When code said:

return svn_error_trace(foo());

It would set the file/line for that location, then call foo() and wrap

any resulting error. However, foo() could potentially set its own

file/line for an inner error. This revision uses a helper function to

reorder execution to: call foo(), then set file/line, then wrap any

resulting error with the trace information.

Prior symptoms were duplicate file/line. They are resolved properly now.

* subversion/include/svn_error.h:

(svn_error__trace): new helper function

(svn_error_trace): rewrite in terms of the new helper

* subversion/libsvn_subr/error.c:

(svn_error__trace): new helper to properly set up file/line

  1. … 1 more file in changeset.

Suggested by: dev@

* subversion/include/svn_error.h

(SVN_ERR_ASSERT2): Rename to ..

(SVN_ERR_ASSERT_E): .. this.

(SVN_ERR_ASSERT): Add cross-reference.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_commit_txn): Track rename.

  1. … 1 more file in changeset.
* subversion/include/svn_error.h

(SVN_ERR_ASSERT2): Expand and correct docstring.

Found by: julianf

Follow-up to r1329601:

* subversion/include/svn_error.h


* subversion/libsvn_fs/fs-loader.c

(svn_fs_commit_txn): Use new macro to not-leak errors upon asserting.

  1. … 1 more file in changeset.
When running the clang static analyzer, it is useful to use a vanilla assert,

rather than our custom one, so make it so.

* subversion/include/svn_error.h

(SVN_ERR_ASSERT): Optionally alias to assert() if running in the clang static


Revert an inadvertant part of r1241651.

Ev2 shims: Don't violate the Ev2 ordering constraints by calling abort()

after complete() returns an error.

Current number of Ev2 test failures: 8

* subversion/libsvn_delta/compat.c

(ev2_edit_baton): New member.

(ev2_close_edit): Mark this edit as closed.

(ev2_abort_edit): Don't call the underlying abort() handler if we've already

closed the edit.

* subversion/include/svn_error.h:

Incidental commit reverted in r1241653.

  1. … 1 more file in changeset.