Use svn_config_t.x_pool only for data that gets (temporarily) stored
in our config tree.  This will allow us to not create the x_pool for
r/o configs at all because they are always fully expanded.

* subversion/libsvn_subr/config_impl.h
  (svn_config_t): update commentary

* subversion/libsvn_subr/config.c
  (svn_config_get,
   svn_config_enumerate): use cfg->pool instead of x_pool as bases for
                          temporary pools

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538072 13f79535-47bb-0310-9956-ffa450edef68
Our svn_config_t struct contains tempoary string buffers that will be
modified even in r/o access mode.  Thus, it is inherently no thead-safe.

Introduce a private API function that will create shallow copies,
i.e. share the expensive config tree but use separate temp buffers.

* subversion/include/private/svn_subr_private.h
  (svn_config__shallow_copy): declare new private API function

* subversion/libsvn_subr/config_file.c
  (svn_config__shallow_copy): implement

* subversion/libsvn_repos/config_pool.c
  (return_config_ref): return shallow copies to ensure the config
                       can be used safely from multiple threads

* subversion/tests/libsvn_repos/repos-test.c
  (test_config_pool): since the config pool always returns a new root
                      struct we need to check whether the actual
                      config tree is the same

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538083 13f79535-47bb-0310-9956-ffa450edef68
Bring our config_pool API up on par with the standard config API
by adding support for MUST_EXIST and CASE_SENSITIVE parameters.

This requires a similar extension to the svn_repos__retrieve_config
API that we rely on.  Since the underlying svn_config_t API already
support c/s, we simply need to pass the extra flag through to it.

The config_pool internal storage now harbors up to two alternative
config instances - one case sensitive one case in-sensitive.  In most
cases, we will read any given config with consistent c/s settings,
i.e. only one of the config entries will actually be used.

* subversion/include/private/svn_repos_private.h
  (svn_repos__retrieve_config): add c/s parameter to API
  (svn_repos__config_pool_get): add c/s and must_exist parameters

* subversion/libsvn_repos/authz.c
  (authz_retrieve_config_repo,
   svn_repos__retrieve_config): add c/s pass-through parameter 
  (svn_repos__authz_read): update caller

* subversion/libsvn_repos/config_pool.c
  (config_ref_t): use separate config struct for c/s and c/i
  (return_config_ref): add c/s parameter and return appropriate config object
  (config_by_checksum): add c/s parameter and check appropriate config object
                        for availability
  (config_add): add c/s parameter and update the correct config variant
  (auto_parse,
   add_checksum,
   find_repos_config): add c/s pass-through parameter
  (config_by_url): add c/s parameter and select the correct config variant
  (svn_repos__config_pool_get): add c/s pass-through parameter

* subversion/tests/libsvn_repos/repos-test.c
  (test_config_pool): update API caller

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538109 13f79535-47bb-0310-9956-ffa450edef68
In case of in-repo authz data, we usually already have an open repository.
So, add that as an optional parameter to to config_pool getter to save the
expensive repo_open call.

* subversion/include/private/svn_repos_private.h
  (svn_repos__config_pool_get): add optional preferred_repo parameter

* subversion/libsvn_repos/config_pool.c
  (find_repos_config): use repo provided to us if that matches the path
  (svn_repos__config_pool_get): parameter pass-through

* subversion/tests/libsvn_repos/repos-test.c
  (test_config_pool): update API caller

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538120 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_repos/config_pool.c
  (svn_repos__config_pool_get): don't leak the pool upon cache hit

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538123 13f79535-47bb-0310-9956-ffa450edef68
Expose the node property validation utility in JavaHL.

* build.conf (private-built-includes):
   Added org_apache_subversion_javahl_util_PropLib.h.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* SVNUtil.java (SVNUtil.canonicalizeNodeProperty): New static methods.
* util/PropLib.java (PropLib): New class.

[in subversion/bindings/javahl/native]
* org_apache_subversion_javahl_util_PropLib.cpp: New.
   Native implementation of class Proplib.

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* UtilTests.java (UtilTests.testValidateProp): New test case.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538133 13f79535-47bb-0310-9956-ffa450edef68
* subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java
  (DiffLib.fileDiff, DiffLib.fileMerge): Fix references in docstrings.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538134 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/libsvn_subr: Ignore sqlite-test.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538311 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/svn_test_main.c
  (svn_test_data_path): Resolve shadowing variable warning by renaming
     argument.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538466 13f79535-47bb-0310-9956-ffa450edef68
Add an XFail regression test for issue #4444,
"diffing move inside a copy asserts".

* subversion/tests/cmdline/diff_tests.py
  (diff_move_inside_copy, test_list): New test.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538516 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/diff_tests.py
  (diff_move_inside_copy): Tweak comment for accuracy.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538517 13f79535-47bb-0310-9956-ffa450edef68
Fix issue #4444, "diffing move inside a copy asserts".

* subversion/libsvn_wc/diff_editor.c
  (svn_wc__diff_local_only_file): Skip deleted files when comparing
   against the working tree, like done in svn_wc__diff_local_only_dir().

* subversion/tests/cmdline/diff_tests.py
  (diff_move_inside_copy): Remove XFail marker.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538519 13f79535-47bb-0310-9956-ffa450edef68
Following up on r1538519, don't make a function work in an unsupported scenario,
but make the caller skip the call to this function and its directory sibling.

* subversion/libsvn_wc/diff_editor.c
  (svn_wc__diff_local_only_file): Revert r1538519 change.

* subversion/libsvn_wc/diff_local.c
  (diff_status_callback): Don't call the diff local functions if the local node
    is deleted.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538574 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/diff.h
  (svn_wc__diff_local_only_file, svn_wc__diff_local_only_dir): Clearly
   state the purpose of these functions in their docstrings, in addition
   to explaining the mechanics derived from that purpose.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538581 13f79535-47bb-0310-9956-ffa450edef68
Implement svn_repos_fs_type() for easy access to repository filesystem type.

* subversion/include/svn_repos.h
* subversion/libsvn_repos/repos.c
  (svn_repos_fs_type): New.

* subversion/tests/libsvn_repos/repos-test.c
  (test_repos_fs_type): New test for svn_repos_fs_type() function.
  (test_funcs): Add test_repos_fs_type.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538585 13f79535-47bb-0310-9956-ffa450edef68
Follow-up to r1538585.

* subversion/include/svn_repos.h
  (svn_repos_fs_type): Add @since to docstring.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538587 13f79535-47bb-0310-9956-ffa450edef68
Follow-up to r1538585.

* subversion/include/svn_repos.h
  (test_repos_fs_type, test_funcs): Fix formatting.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538591 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_client/iprops.c
  (wcroot_iprops): Clear output argument when returning SVN_NO_ERROR.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538602 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/libsvn_wc/utils.c
  (sbox_wc_update_depth): Handle revision -1 as HEAD.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538603 13f79535-47bb-0310-9956-ffa450edef68
Properly reset an sqlite statement to avoid an abort() in a testcase that
I'm working on. This error can happen when a move node is already involved
in a different tree conflict.

* subversion/libsvn_wc/wc_db_update_move.c
  (resolve_delete_raise_moved_away): Reset sql statement when adding a
    conflict fails.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1538623 13f79535-47bb-0310-9956-ffa450edef68