Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Cache youngest revision during processing one request on mod_dav_svn.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn_repos): Add YOUNGEST_REV member.

(dav_svn__create_txn): Drop const qualifier from REPOS argument.

(dav_svn__get_youngest_rev): New function declaration.

* subversion/mod_dav_svn/util.c

(dav_svn__get_youngest_rev): New function.

* subversion/mod_dav_svn/activity.c

* subversion/mod_dav_svn/liveprops.c

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/reports/get-location-segments.c

* subversion/mod_dav_svn/reports/update.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

(dav_svn__create_txn, insert_prop_internal, append_locks,

dav_svn__get_location_segments_report, dav_svn__update_report,

prep_regular, prep_version, parse_querystring,

dav_svn__working_to_regular_resource, get_option, dav_svn__checkout):

Use dav_svn__get_youngest_rev() instead of direct call to

svn_fs_youngest_rev().

(get_parentpath_resource, get_resource): Initialize RESPO->YOUNGEST_REV to

SVN_INVALID_REVNUM.

  1. … 8 more files in changeset.
Improve error message handling on two lock operations via ra_serf. These

errors still relied on the http reason string for the user visible text.

This fixes a serf/mod_dav TODO and two http/2 test failures.

* subversion/libsvn_ra_serf/lock.c

(run_locks): Tweak text on 304. This was not unlock specific.

Prefer 423 text from server if it looks valid.

* subversion/mod_dav_svn/lock.c

(get_locks): Add another lie to this function, that already has a few.

* subversion/tests/cmdline/authz_tests.py

(authz_locking): Allow other text. Expecting an unlock error when

performing an 'svn lock' doesn't make much sense.

* subversion/tests/cmdline/lock_tests.py

(unlocked_lock_of_other_user): Expect same error on all ra layers.

  1. … 3 more files in changeset.
Add an apr_status_t parameter to dav_svn__new_error() and

dav_svn__new_error_svn(). This allows us to avoid dropping the

status when ap_fflush() and ap_pass_brigade() calls fail, and a

few other calls as well. Most calls currently pass zero.

dav_svn__new_error() was originally modelled on dav_new_error() in

httpd 2.0 which did not support passing an apr_status_t but in 2.4

an apr_status_t parameter was added.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn__new_error_svn, dav_svn__new_error): Add APR status parameter.

* subversion/mod_dav_svn/util.c

(dav_svn__new_error, dav_svn__new_error_svn): Add APR status parameter.

(dav_svn__final_flush_or_error): Pass status.

(build_error_chain, dav_svn__test_canonical): Pass zero.

* subversion/mod_dav_svn/repos.c

(deliver): Pass status or zero.

(prep_working, prep_activity, prep_private, prep_resource,

dav_svn_split_uri2, get_parentpath_resource, parse_querystring,

get_resource, get_parent_resource, open_stream, seek_stream,

create_collection, copy_resource, remove_resource, move_resource,

do_walk, dav_svn__create_version_resource, handle_post_request,

dav_svn__method_post): Pass zero.

* subversion/mod_dav_svn/lock.c

(unescape_xml): Pass status.

(dav_lock_to_svn_lock, get_locks, find_lock, has_locks,

append_locks, remove_lock, refresh_locks): Pass zero.

* subversion/mod_dav_svn/merge.c

(dav_svn__merge_response): Pass status or zero.

* subversion/mod_dav_svn/activity.c

(dav_svn__delete_activity): Pass zero.

* subversion/mod_dav_svn/deadprops.c

(save_value, db_open, decode_property_value, db_store): Pass zero.

* subversion/mod_dav_svn/reports/dated-rev.c

(dav_svn__dated_rev_report): Pass zero.

* subversion/mod_dav_svn/reports/deleted-rev.c

(dav_svn__get_deleted_rev_report): Pass zero.

* subversion/mod_dav_svn/reports/file-revs.c

(dav_svn__file_revs_report): Pass zero.

* subversion/mod_dav_svn/reports/get-location-segments.c

(dav_svn__get_location_segments_report): Pass zero.

* subversion/mod_dav_svn/reports/get-locations.c

(dav_svn__get_locations_report): Pass zero.

* subversion/mod_dav_svn/reports/get-locks.c

(dav_svn__get_locks_report): Pass zero.

* subversion/mod_dav_svn/reports/inherited-props.c

(dav_svn__get_inherited_props_report): Pass zero.

* subversion/mod_dav_svn/reports/log.c

(dav_svn__log_report): Pass zero.

* subversion/mod_dav_svn/reports/mergeinfo.c

(dav_svn__get_mergeinfo_report): Pass zero.

* subversion/mod_dav_svn/reports/replay.c

(make_editor, dav_svn__replay_report): Pass zero.

* subversion/mod_dav_svn/reports/update.c

(malformed_element_error, dav_svn__update_report): Pass zero.

* subversion/mod_dav_svn/version.c

(set_auto_revprops, vsn_control, dav_svn__checkout, uncheckout,

dav_svn__checkin, deliver_report, make_activity, merge): Pass zero.

  1. … 18 more files in changeset.
Apply the standard pre-branch whitespace cleanup via

tools/dev/remove-trailing-whitespace.zsh

There should be no functional changes.

* .ycm_extra_conf.py

* build/generator/gen_win.py

* build/generator/gen_win_dependencies.py

* subversion/bindings/javahl/native/EditorProxy.h

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

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

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/bindings/swig/ruby/test/test_fs.rb

* subversion/bindings/swig/ruby/test/util.rb

* subversion/bindings/swig/ruby/test/windows_util.rb

* subversion/include/private/svn_fs_fs_private.h

* subversion/include/private/svn_packed_data.h

* subversion/include/private/svn_repos_private.h

* subversion/include/private/svn_sorts_private.h

* subversion/include/private/svn_subr_private.h

* subversion/include/private/svn_wc_private.h

* subversion/include/svn_auth.h

* subversion/include/svn_cache_config.h

* subversion/include/svn_client.h

* subversion/include/svn_cmdline.h

* subversion/include/svn_diff.h

* subversion/include/svn_fs.h

* subversion/include/svn_io.h

* subversion/include/svn_ra.h

* subversion/include/svn_repos.h

* subversion/include/svn_string.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/hotcopy.c

* subversion/libsvn_fs_fs/id.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/index.h

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/low_level.h

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/recovery.c

* subversion/libsvn_fs_fs/rev_file.c

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/stats.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_fs/verify.c

* subversion/libsvn_fs_x/cached_data.c

* subversion/libsvn_fs_x/changes.c

* subversion/libsvn_fs_x/dag.h

* subversion/libsvn_fs_x/fs.h

* subversion/libsvn_fs_x/fs_id.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/hotcopy.c

* subversion/libsvn_fs_x/hotcopy.h

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/index.h

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/low_level.h

* subversion/libsvn_fs_x/noderevs.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_fs_x/rev_file.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/revprops.h

* subversion/libsvn_fs_x/string_table.c

* subversion/libsvn_fs_x/string_table.h

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/tree.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_fs_x/verify.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz_pool.c

* subversion/libsvn_repos/config_pool.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_subr/bit_array.c

* subversion/libsvn_subr/cache-membuffer.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_subr/fnv1a.c

* subversion/libsvn_subr/gpg_agent.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/object_pool.c

* subversion/libsvn_subr/packed_data.c

* subversion/libsvn_subr/prefix_string.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/sqlite.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/sysinfo.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/utf8proc/utf8proc_data.c

* subversion/libsvn_subr/x509info.c

* subversion/libsvn_wc/diff.h

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc.h

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db.h

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/status.c

* subversion/svn/auth-cmd.c

* subversion/svn/info-cmd.c

* subversion/svn/mergeinfo-cmd.c

* subversion/svn/notify.c

* subversion/svn/propget-cmd.c

* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnserve/logger.c

* subversion/svnserve/serve.c

* subversion/svnserve/server.h

* subversion/svnserve/svnserve.c

* subversion/tests/cmdline/blame_tests.py

* subversion/tests/cmdline/checkout_tests.py

* subversion/tests/cmdline/commit_tests.py

* subversion/tests/cmdline/export_tests.py

* subversion/tests/cmdline/externals_tests.py

* subversion/tests/cmdline/lock_tests.py

* subversion/tests/cmdline/merge_tests.py

* subversion/tests/cmdline/merge_tree_conflict_tests.py

* subversion/tests/cmdline/move_tests.py

* subversion/tests/cmdline/redirect_tests.py

* subversion/tests/cmdline/stat_tests.py

* subversion/tests/cmdline/svnadmin_tests.py

* subversion/tests/cmdline/switch_tests.py

* subversion/tests/cmdline/update_tests.py

* subversion/tests/libsvn_client/client-test.c

* subversion/tests/libsvn_client/mtcc-test.c

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

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

* subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

* subversion/tests/libsvn_fs_x/string-table-test.c

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

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

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

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

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

* subversion/tests/libsvn_subr/packed-data-test.c

* subversion/tests/libsvn_subr/priority-queue-test.c

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

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

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

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

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/svn_test_main.c

* tools/dev/benchmarks/RepoPerf/copy_repo.py

* tools/dev/benchmarks/RepoPerf/win_repo_bench.py

* tools/dev/build-svn-deps-win.pl

* tools/dev/fsfs-access-map.c

* tools/dev/po-merge.py

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/backport.pl

* tools/dist/backport_tests.py

* tools/hook-scripts/mailer/mailer.py

* tools/server-side/svnpubsub/daemonize.py

* win-tests.py

Remove unneeded whitespace via script.

  1. … 184 more files in changeset.
Make the behavior of post lock and unlock hooks consistent between DAV and

the other ra implementations.

* subversion/libsvn_ra_serf/lock.c

(run_locks): Report unlocks as succeeded before reporting the lock failure.

* subversion/mod_dav_svn/lock.c

(append_locks,

remove_lock): Specialize the behavior for post hook failures.

* subversion/mod_dav_svn/util.c

(dav_svn__convert_err): Don't hide post unlock errors.

* subversion/tests/cmdline/lock_tests.py

(failing_post_hooks): Remove XFail marker for DAV. Update expected errors,

while keeping the working copy state checks.

  1. … 3 more files in changeset.
In mod_dav_svn: Properly forward post lock and post unlock failures that are

wrapped with different errors like SVN_ERR_REPOS_POST_LOCK_HOOK_FAILED,

instead of just reporting a generic message.

This will make 'svn' properly report:

svn: E165008: Locking succeeded, but post-lock hook failed

instead of

svn: E165008: Failed to create new lock.

which more accurately describes the result.

* subversion/mod_dav_svn/lock.c

(append_locks,

refresh_locks): Check for hook as error cause instead of only as

outer error code.

Fix issue 3515, DAV clients cannot refresh LOCK.

* subversion/mod_dav_svn/lock.c

(get_locks, has_locks): Make the 'Big Lie' only apply to Subversion

clients, other clients get standard WebDAV behaviour.

* subversion/tests/cmdline/lock_tests.py

(dav_lock_refresh): Remove XFAIL.

Patch by: rhuijben

  1. … 1 more file in changeset.
* subversion/mod_dav_svn/lock.c

(remove_lock_svn_output): Following up on r1553701, add one more sanity

check. Probably unneeded, but the wrapped function performs a similar

check.

Make mod_dav_svn properly report 'svn unlock' errors by producing direct output

instead of waiting for mod_dav to forget handling any error messages and just

reporting a server error on any error.

* subversion/mod_dav_svn/lock.c

(remove_lock): Return NULL instead of 0.

(remove_lock_svn_output): New function, wrapping remove_lock.

(dav_svn__hooks_locks): Use remove_lock_svn_output.

* subversion/tests/cmdline/lock_tests.py

(block_unlock_if_pre_unlock_hook_fails): Require explicit output instead of

accepting a HTTP error.

(lock_hook_messages): New function.

(test_list): Add lock_hook_messages.

  1. … 1 more file in changeset.
* subversion/mod_dav_svn/lock.c

(format_locktoken): XML escape the token from the FS.

Introduce a null-pointer constant that we can use as a termination sentinel

in variable argument lists. This avoids the ugliness of writing

"(char *) NULL" all over the place.

* subversion/include/svn_types.h (SVN_VA_NULL): New symbol.

* subversion/include/svn_dirent_uri.h (svn_dirent_join_many),

subversion/include/svn_path.h (svn_path_join_many),

subversion/include/svn_xml.h (svn_xml_make_open_tag):

Update docstrings, mentioning SVN_VA_NULL as the argument list terminator.

[Lots of implementation files]: Replace typecast-NULL with SVN_VA_NULL in

function calls with variable argument lists.

  1. … 89 more files in changeset.
Follow-up to r1508225: don't include svn_private_config.h in

mod_dav_svn as this leads to duplicate package definitions

for macros such as PACKAGE_*. In general, we can't use the

SVN configuration macros in an Apache module.

* subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c: remove #include svn_private_config.h

  1. … 7 more files in changeset.
Fix the #include order such that svn_private_config.h is always

included first before any other svn header - if we also include

svn_hash.h.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_ConfigImpl_Category.cpp,

subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,

subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c,

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

subversion/libsvn_fs_base/bdb/changes-table.c,

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

subversion/tests/libsvn_fs/fs-test.c,

subversion/tests/libsvn_repos/repos-test.c,

subversion/tests/libsvn_subr/hashdump-test.c,

subversion/tests/libsvn_subr/mergeinfo-test.c,

subversion/tests/libsvn_subr/subst_translate-test.c,

subversion/tests/libsvn_wc/conflict-data-test.c,

subversion/tests/libsvn_wc/op-depth-test.c,

subversion/tests/libsvn_wc/wc-test.c,

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

tools/server-side/fsfs-stats.c): #include svn_private_config.h first

  1. … 180 more files in changeset.
Return "501 Not Implemented" rather than "401 Unathorized" when

anonymous LOCK requests fail. Return "412 Precondition Failed"

rather than "401 Unathorized" when a LOCK refresh has the wrong

token. The 401 responses were not valid HTTP. Fixes part of

issue 4368.

* subversion/mod_dav_svn/lock.c

(append_locks, remove_lock): Return 501.

(refresh_locks): Return 501 or 412.

Revert the "just-for-symmetry" changes made in r1483532 and keep only

those used for log and merge info in tight loops.

* subversion/libsvn_client/add.c

(svn_client__get_all_auto_props): switch back to svn_hash_[g|s]ets

* subversion/libsvn_client/commit_util.c

(svn_client__ensure_revprop_table): same

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): same

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): same

* subversion/libsvn_client/log.c

(pre_15_receiver): same

* subversion/libsvn_client/merge.c

(prepare_merge_props_changed, merge_file_added, merge_dir_added,

merge_dir_deleted): same

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalogue): same

* subversion/libsvn_fs_base/tree.c

(txn_body_get_mergeinfo_data_and_entries,

txn_body_get_mergeinfo_for_path): same

* subversion/libsvn_fs_fs/fs_fs.c

(write_revision_zero): same

* subversion/libsvn_fs_fs/tree.c

(get_mergeinfo_for_path_internal): same

* subversion/libsvn_ra/deprecated.c

(svn_ra_get_commit_editor2): same

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_commit_editor, svn_ra_local__get_commit_ev2): same

* subversion/libsvn_ra_svn/client.c

(ra_svn_commit): same

* subversion/libsvn_repos/commit.c

(svn_repos__get_commit_ev2): same

* subversion/libsvn_repos/delta.c

(delta_proplists): same

* subversion/libsvn_repos/deprecated.c

(svn_repos_get_commit_editor4): same

* subversion/libsvn_repos/dump.c

(dump_node, write_revision_record): same

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_begin_txn_for_commit2, svn_repos_fs_begin_txn_for_commit,

svn_repos_fs_revision_proplist): same

* subversion/libsvn_repos/reporter.c

(get_revision_info): same

* subversion/libsvn_wc/status.c

(collect_ignore_patterns): same

* subversion/mod_dav_svn/activity.c

(dav_svn__create_txn): same

* subversion/mod_dav_svn/lock.c

(append_locks): same

* subversion/svndumpfilter/svndumpfilter.c

(output_revision): same

* subversion/svnmucc/svnmucc.c

(execute, sanitize_log_sources): same

* subversion/svnrdump/load_editor.c

(new_node_record): same

* subversion/svnserve/serve.c

(commit): same

* subversion/svnsync/svnsync.c

(replay_rev_started): same

  1. … 26 more files in changeset.
We frequently use property name constants in conjunction with hash containers.

Provide new wrappers around apr_hash_get and apr_hash_set that accept such

string constants and statically determine their size. That minimizes the

hash access costs.

Mass change hash get and set calls for SVN_PROP_* constants.

* subversion/include/svn_hash.h

(svn_hash_gets,

svn_hash_sets): Doxygen-ize the docstring

(svn_hash_gets_fixed_key,

svn_hash_sets_fixed_key): define new apr_hash_* wrapper

* subversion/libsvn_client/add.c

(svn_client__get_all_auto_props): use faster hash wrappers with SVN_PROP_*

* subversion/libsvn_client/commit_util.c

(svn_client__ensure_revprop_table): ditto

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): ditto

* subversion/libsvn_client/list.c

(svn_client__ra_stat_compatible): ditto

* subversion/libsvn_client/log.c

(pre_15_receiver): ditto

* subversion/libsvn_client/merge.c

(prepare_merge_props_changed, merge_file_added, merge_dir_added,

merge_dir_deleted): ditto

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalog): ditto

* subversion/libsvn_fs_base/tree.c

(txn_body_get_mergeinfo_data_and_entries,

txn_body_get_mergeinfo_for_path): same

* subversion/libsvn_fs_fs/fs_fs.c

(write_revision_zero): same

* subversion/libsvn_fs_fs/tree.c

(crawl_directory_dag_for_mergeinfo, get_mergeinfo_for_path_internal): same

* subversion/libsvn_ra/deprecated.c

(svn_ra_get_commit_editor2): same

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_commit_editor, svn_ra_local__get_commit_ev2): same

* subversion/libsvn_ra_svn/client.c

(ra_svn_commit, ra_svn_log): same

* subversion/libsvn_repos/commit.c

(svn_repos__get_commit_ev2): same

* subversion/libsvn_repos/delta.c

(delta_proplists): same

* subversion/libsvn_repos/deprecated.c

(svn_repos_get_commit_editor4): same

* subversion/libsvn_repos/dump.c

(dump_node, write_revision_record):

* subversion/libsvn_repos/fs-wrap.c

(svn_repos_fs_begin_txn_for_commit2, svn_repos_fs_begin_txn_for_commit,

svn_repos_fs_revision_proplist): same

* subversion/libsvn_repos/log.c

(fill_log_entry): same

* subversion/libsvn_repos/reporter.c

(get_revision_info): same

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_get_committed_info): same

* subversion/libsvn_subr/compat.c

(svn_compat_log_revprops_clear, svn_compat_log_revprops_out): same

* subversion/libsvn_wc/status.c

(collect_ignore_patterns): same

* subversion/mod_dav_svn/activity.c

(dav_svn__create_txn): same

* subversion/mod_dav_svn/lock.c

(append_locks): same

* subversion/svndumpfilter/svndumpfilter.c

(output_revision): same

* subversion/svnmucc/svnmucc.c

(execute, sanitize_log_sources): same

* subversion/svnrdump/load_editor.c

(new_node_record): same

* subversion/svnserve/serve.c

(commit): same

* subversion/svnsync/svnsync.c

(replay_rev_started): same

[Most of this got reverted in r1483610]

[Remainder reverted in r1484181]

  1. … 30 more files in changeset.
* **/**

Run tools/dev/remove-trailing-whitespace.sh to remove all trailing whitespace

before we branch 1.8, like we did before creating previous branches.

No functional changes.

  1. … 199 more files in changeset.
Reinstate (void) casts removed in r1464228, r1464060 and r1464058 while

keeping all the other code changes in those revisions.

* subversion/libsvn_delta/path_driver.c

(pop_stack): Add cast.

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__conn_closed, xml_parser_cleanup,

svn_ra_serf__process_pending, svn_ra_serf__handle_xml_parser,

svn_ra_serf__credentials_callback, svn_ra_serf__request_create,

expat_start, expat_end, expat_cdata, expat_response_handler): Add cast.

* subversion/libsvn_repos/hooks.c

(parse_hooks_env_section, svn_repos__parse_hooks_env): Add cast.

* subversion/libsvn_subr/config.c

(svn_config_find_group): Add cast.

* subversion/mod_dav_svn/liveprops.c

(is_writable, dav_svn__insert_all_liveprops): Add cast.

* subversion/mod_dav_svn/lock.c

(unescape_xml): Add cast.

* subversion/mod_dav_svn/mod_dav_svn.c

(merge_xml_in_filter): Add cast.

* subversion/mod_dav_svn/util.c

(dav_svn__final_flush_or_error): Add cast.

  1. … 7 more files in changeset.
Remove (void) casts of ignored return values from mod_dav_svn, add

some extra handling for parameters that could be used when errors

are ignored.

* subversion/mod_dav_svn/liveprops.c

(is_writable): Remove cast, only dereference non-NULL pointer.

(dav_svn__insert_all_liveprops): Remove cast.

* subversion/mod_dav_svn/lock.c

(unescape_xml): Remove cast, initialise buffer.

* subversion/mod_dav_svn/mod_dav_svn.c

(merge_xml_in_filter): Remove cast.

* subversion/mod_dav_svn/util.c

(dav_svn__final_flush_or_error): Remove cast, initialise length.

  1. … 3 more files in changeset.
Use svn_hash_gets and svn_hash_sets.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/editor.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs_base/bdb/changes-table.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_util/fs-util.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/mod_dav_svn/activity.c

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/merge.c

* subversion/mod_dav_svn/reports/update.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/help-cmd.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svndumpfilter/svndumpfilter.c

* subversion/svnlook/svnlook.c

* subversion/svnmucc/svnmucc.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/load_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

  1. … 70 more files in changeset.
Improve the logic in mod_dav_svn's implementation of LOCK.

* subversion/mod_dav_svn/lock.c

(append_locks): Only allow locks on paths that are in the repository,

disallow anonymous locks earlier, move the repos variable to function

scope and cleanup some messy uses of resource->info->repos.

Fixes CVE-2013-1846 and CVE-2013-1847, see our advisory at:

http://subversion.apache.org/security/CVE-2013-1846-advisory.txt

http://subversion.apache.org/security/CVE-2013-1847-advisory.txt

* subversion/mod_dav_svn/lock.c

(append_locks, refresh_lock): Use the SVN_ERR_IS_LOCK_ERROR() macro to

identify some of the error codes that don't need to be sanitized.

This change additionally exempts FS_NOT_FOUND errors from being sanitized.

Suggested by: danielsh

Follow-up to 1330516: Restore client-side output expected by some tests.

Should fix failing tests on the neon-bdb buildbot.

* subversion/mod_dav_svn/lock.c

(append_locks, refresh_locks): Do no sanitize errors that the test suite

expects to see. These errors will (hopefully!) never expose sensitive

information to clients.

Follow-up to 1330516: Restore pre-lock hook stderr output to the client.

This feature was broken accidentally.

Found by: philip

* subversion/mod_dav_svn/lock.c

(append_locks, refresh_locks): Do no sanitize hook errors.

* subversion/libsvn_repos/hooks.c

(run_hook_cmd): When the hook fails to start, do not use the error

code SVN_ERR_REPOS_HOOK_FAILURE. Use SVN_ERR_REPOS_BAD_ARGS instead.

This way, the full path to the pre-lock hook that could not be started

is logged by mod_dav_svn but not exposed to the client.

  1. … 1 more file in changeset.
Follow-up to r1330516:

* subversion/mod_dav_svn/lock.c

(refresh_locks): Indentation fix.

* subversion/mod_dav_svn/lock.c

(append_locks, refresh_locks): Sanitze errors returned from the repository

when running functions that run pre-lock and post-lock hooks. These might

return error messages containing paths on the server which we don't want

to expose to clients.

Don't use SVN_NO_ERROR inappropriately: use APR_SUCCESS for an apr_status_t

or NULL for a pointer to a dav_error.

* subversion/libsvn_fs_base/bdb/env.c

(bdb_error_gatherer): As above.

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__conn_setup): Same.

* subversion/mod_dav_svn/lock.c

(unescape_xml): Same.

* subversion/mod_dav_svn/merge.c

(dav_svn__merge_response): Same.

* subversion/mod_dav_svn/version.c

(dav_svn__build_lock_hash): Same.

* subversion/svn/util.c

(svn_cl__try): Same.

* subversion/tests/libsvn_ra_local/ra-local-test.c

(try_split_url): Same.

  1. … 6 more files in changeset.
Error message consistency fix.

* subversion/libsvn_repos/commit.c

(svn_repos__post_commit_error_str):

Refer to the error as "post commit FS processing", dropping the -

in post-commit, so the same text is used everywhere.

* subversion/mod_dav_svn/lock.c

(append_locks):

Ditto.

* subversion/po/fr.po,

* subversion/po/ko.po,

* subversion/po/zh_CN.po:

Ditto.

  1. … 4 more files in changeset.
* subversion/mod_dav_svn/lock.c

(append_locks): Add a reminder to, maybe, someday, log the being-ignored error.

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

success.

* subversion/mod_dav_svn/version.c

(dav_svn__checkin),

(merge):

Use revision number returned from svn_repos_fs_commit_txn() to

test for a successful commit.

* subversion/mod_dav_svn/lock.c

(append_locks):

Ditto.

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

(close_revision):

Ditto.

* subversion/libsvn_repos/commit.c

(close_edit):

Ditto.

  1. … 3 more files in changeset.