In the python tests: Replace the most trivial 'commit the whole working copy'
calls that don't perform verifications on the result by a call to
sbox.simple_commit() that at least verifies that a new revision is created.

This way we detect some commit handling breakage (such as timestamp problems)
sooner.

* subversion/tests/cmdline/autoprop_tests.py
  (svn_prop_inheritable_autoprops_unversioned_subtrees_versioned_target):

* subversion/tests/cmdline/blame_tests.py
  (merge_sensitive_blame_and_empty_mergeinfo):

* subversion/tests/cmdline/commit_tests.py
  (commit_out_of_date_deletions):

* subversion/tests/cmdline/history_tests.py
  (cat_avoids_false_identities):

* subversion/tests/cmdline/lock_tests.py
  (verify_path_escaping):

* subversion/tests/cmdline/log_tests.py
  (merge_sensitive_log_reverse_merges,
   merge_sensitive_log_ignores_cyclic_merges,
   merge_sensitive_log_copied_path_inherited_mergeinfo):

* subversion/tests/cmdline/merge_authz_tests.py
  (reintegrate_fails_if_no_root_access):

* subversion/tests/cmdline/merge_reintegrate_tests.py
  (reintegrate_replaced_source):

* subversion/tests/cmdline/merge_tests.py
  (merge_range_predates_history,
   foreign_repos,
   foreign_repos_uuid,
   foreign_repos_2_url,
   copy_then_replace_via_merge,
   merge_source_with_replacement,
   reverse_merge_with_rename):

* subversion/tests/cmdline/resolve_tests.py
  (theirs_conflict_in_subdir):

* subversion/tests/cmdline/revert_tests.py
  (revert_add_over_not_present_dir):

* subversion/tests/cmdline/stat_tests.py
  (status_depth_update):

* subversion/tests/cmdline/svnadmin_tests.py
  (dump_copied_dir,
   dump_move_dir_modify_child,
   recover_fsfs,
   fsfs_recover_handle_missing_revs_or_revprops_file):

* subversion/tests/cmdline/switch_tests.py
  (nonrecursive_switching):

* subversion/tests/cmdline/tree_conflict_tests.py
  (up_add_onto_add_revert):
    Use sandbox.simple_commit() instead of
    main.run_svn(None, 'ci', ..., wc_dir) with no verifications.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489837 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/switch_tests.py
  (imports): Remove unused import from externals_tests.py


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489840 13f79535-47bb-0310-9956-ffa450edef68
Fix a key mapping inefficiency in simplified scheme used by the
1.9 membuffer cache.  In cases of fixed length 16 byte key structures,
the first bytes usually contain a revision number.  Rotating that before
mapping it onto index buckets creates unnecessary "hot buckets",
i.e. local index overflows causing data eviction.

* subversion/libsvn_subr/cache-membuffer.c
  (combine_key): don't rotate the first 8-bytes of a 16 byte key

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489850 13f79535-47bb-0310-9956-ffa450edef68
Minor simplification of the cache stats code.  Clear the aggregated
stats strcut before passing it on to the specific implementatations.

* subversion/libsvn_subr/cache.c
  (svn_cache__get_info): clear all stats before filling them

* subversion/libsvn_subr/cache-membuffer.c
  (svn_membuffer_cache_get_info): simplify

* subversion/libsvn_subr/cache-memcache.c
  (memcache_get_info): simplify

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489855 13f79535-47bb-0310-9956-ffa450edef68
Move the merge test helper code that is used outside merge_tests.py to a new
helper file, to remove a dependency on 18500 lines of python in each test.

For now name the file after a similar file for treeconflicts. This code
should eventually be refactored to a more generic form.

* subversion/tests/cmdline/blame_tests.py
* subversion/tests/cmdline/log_tests.py
* subversion/tests/cmdline/mergeinfo_tests.py
* subversion/tests/cmdline/merge_authz_tests.py
* subversion/tests/cmdline/merge_automatic_tests.py
* subversion/tests/cmdline/merge_reintegrate_tests.py
* subversion/tests/cmdline/merge_tree_conflict_tests.py
* subversion/tests/cmdline/resolve_tests.py
  (imports): Import from svntest.mergetrees instead of merge_tests.py

* subversion/tests/cmdline/merge_tests.py
  (imports): Explicitly import everything from svntest.mergetrees.

  (expected_merge_output,
   check_mergeinfo_recursively,
   set_up_dir_replace,
   set_up_branch,
   local_path,
   svn_mkfile,
   svn_modfile,
   svn_copy,
   svn_merge,
   noninheritable_mergeinfo_test_set_up): Move functions to ...

* subversion/tests/cmdline/svntest/mergetrees.py
  (*): .. here.
  Copied from ../merge_tests.py, keeping just the 'generic' code.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489856 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/update_tests.py
  (imports): Following up on r1489856, fixup imports.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489858 13f79535-47bb-0310-9956-ffa450edef68
Improve cache statistics in particular for membuffer caches:
- show index bucket usage distribution
- show size stats only as an option
- provide global membuffer stats
Update our reporting code to use all these nice features.

* subversion/include/private/svn_cache.h
  (svn_cache__info_t): add bucket fill level histogram
  (svn_cache__get_info): add option to reduce output
  (svn_cache__membuffer_get_global_info): new private API function

* subversion/libsvn_subr/cache.c
  (svn_cache__format_info): extend implementation

* subversion/libsvn_fs_fs/caching.c
  (dump_cache_statistics): access stats only; skip unused caches
  (dump_global_cache_statistics): new utility function
  (svn_fs_fs__initialize_caches): register global stats dump

* subversion/libsvn_subr/cache-membuffer.c
  (svn_membuffer_get_segment_info): optionally include histogram
  (svn_membuffer_cache_get_info): update caller
  (svn_membuffer_get_global_segment_info): new utility
  (svn_cache__membuffer_get_global_info): implement new private API


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489883 13f79535-47bb-0310-9956-ffa450edef68
Add regression test for the 'svn ci ci' problem I just found out.
I expected to commit the current directory, but instead I committed nothing
at all without a warning that I had two 'ci'-s.

* subversion/tests/cmdline/commit_tests.py
  (commit_unversioned): New test. Mark as XFail.
  (test_list): Add commit_unversioned.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489885 13f79535-47bb-0310-9956-ffa450edef68
* subversion/include/private/svn_wc_private.h
  (svn_wc__status2_from_3): Mark as deprecated.

* subversion/libsvn_wc/util.c
  (svn_wc__status2_from_3): Move from here...

* subversion/libsvn_wc/deprecated.c
  (svn_wc__status2_from_3): ...to here.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489891 13f79535-47bb-0310-9956-ffa450edef68
Handle unversioned-not existing targets properly from the working copy status
walker, by returning the 'svn' expected error for this case.

* subversion/libsvn_wc/status.c
  (svn_wc__internal_walk_status): Handle the completely unknown case properly.

* subversion/tests/cmdline/commit_tests.py
  (commit_unversioned): Remove XFail marker. Update expected error. Remove unneeded
    whitespace.

* subversion/tests/cmdline/stat_tests.py
  (status_for_nonexistent_file,
   status_not_present): Expect unmodified output, but a warning on stderr.

* subversion/tests/cmdline/tree_conflict_tests.py
  (import): Import run_and_verify_svn2.
  (ensure_tree_conflict): Ignore warnings for completely unknown nodes.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489928 13f79535-47bb-0310-9956-ffa450edef68
Remove duplicated information from a few error messages.

* subversion/libsvn_subr/io.c
  (svn_io_wait_for_cmd): Remove 'exitwhy' from the error message for the cases
    where exitwhy is already completely handled by the specific error message.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1489935 13f79535-47bb-0310-9956-ffa450edef68
svnpubsub: Set the media type to a unique one now that we finally agreed.

[in tools/server-side/svnpubsub]
* svnpubsub/server.py
  (Client.write_start): Use application/vnd.apache.vc-notify+json



git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490045 13f79535-47bb-0310-9956-ffa450edef68
Small compatibility improvement. No functional change.

* subversion/libsvn_subr/cache-membuffer.c
  (get_group_index,
   combine_key): use APR_UINT64_C() instead of ull suffix

Patch by: joeswatosh

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490221 13f79535-47bb-0310-9956-ffa450edef68
* tools/dev/unix-build/Makefile.svn: Bump to serf-1.2.1.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490261 13f79535-47bb-0310-9956-ffa450edef68
svnpubsub: Remove version header that was uninitentionally added in r1490045.

[in tools/server-side/svnpubsub]
* svnpubsub/server.py
  (Client.write_start): Remove version header.



git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490326 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_client/patch.c
  (check_ancestor_delete): Properly retrieve ignore settings before walking
    status to see if a directory can be safely deleted.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490378 13f79535-47bb-0310-9956-ffa450edef68
For now revert r1489928, to unbreak the trunk build of JavaHL.

Either the JavaHL expectations should be fixed or a better fix should be
implemented to make the status users handle invalid status targets.

The JavaHL problem shows that it is not really possible to apply this
change in a fully backward compatible way. Most callers currently ignore
this problem but would be better of with an easy to detect specific error.

* subversion/libsvn_wc/status.c
  (svn_wc__internal_walk_status): Return success for non-existing,
    non-versioned targets in a working copy. Reverting.

* subversion/tests/cmdline/commit_tests.py
* subversion/tests/cmdline/stat_tests.py
* subversion/tests/cmdline/tree_conflict_tests.py
  Revert


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490380 13f79535-47bb-0310-9956-ffa450edef68
For RA_SVN, we taught the transmitting side to send commands and some data
using a fully typed API.  Now, let the receiving side begin to use fully
typed APIs.  Start with the "changed path" structure send as part of an
svn log -v.  Other functions may follow later as they turn out to be part
of the hot path.

* subversion/include/private/svn_ra_svn_private.h
  (svn_send_data): tweak doxygen group name
  (svn_ra_svn__read_data_log_changed_entry): declare new private API

* subversion/libsvn_ra_svn/marshal.c
  (CHECK_PROTOCOL_COND,
   svn_ra_svn__read_string,
   svn_ra_svn__read_cstring,
   svn_ra_svn__read_word,
   svn_ra_svn__read_revision,
   svn_ra_svn__read_boolean,
   svn_ra_svn__read_list,
   svn_ra_svn__read_check_array_size): new data extraction & verification
                                       utility functions
  (svn_ra_svn__read_data_log_changed_entry): implement

* subversion/libsvn_ra_svn/client.c
  (ra_svn_log): use the new API for faster processing


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1490669 13f79535-47bb-0310-9956-ffa450edef68
On the fsfs-format7 branch: sync with trunk up to and inclduing r140669.

git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/fsfs-format7@1490671 13f79535-47bb-0310-9956-ffa450edef68