Add a new function to convert from svn_wc_conflict_description3_t back
to svn_wc_conflict_description2_t. This will be needed to gradually
move existing code over to the new conflict description type.

* subversion/include/private/svn_wc_private.h
  (svn_wc__cd3_to_cd2): Declare.

* subversion/libsvn_wc/util.c
  (svn_wc__cd3_to_cd2): New. Currently performs a straight copy of all fields,
   since the conflict description types are still identical as of yet.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496419 13f79535-47bb-0310-9956-ffa450edef68
* subversion/svn/svn.c
  (svn_cl__check_cancel): Validate passed cancel baton for better test 
   coverage.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496434 13f79535-47bb-0310-9956-ffa450edef68
Revert r1493097: Run test suite with default SQLite locking mode, not 
exclusive locking.

Approved by: rhuijben

* subversion/tests/cmdline/svntest/main.py: Revert r1493097.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496437 13f79535-47bb-0310-9956-ffa450edef68
Add a new function to convert an array of 'svn_wc_conflict_description3_t *'
elements to an array of 'svn_wc_conflict_description2_t *' elements.
This will be needed to gradually move existing code over to the new
conflict description type.

* subversion/include/private/svn_wc_private.h
  (svn_wc__cd3_array_to_cd2_array): Declare.

* subversion/libsvn_wc/util.c
  (svn_wc__cd3_array_to_cd2_array): New.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496447 13f79535-47bb-0310-9956-ffa450edef68
* tools/dev/unix-build/Makefile.svn: github is too hip for stable links.
   It now throws 403 at me when I'm trying to get the junit distfile.
   Get the file from sourceforge.net instead.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496464 13f79535-47bb-0310-9956-ffa450edef68
Use a cheaper ra operation for a common libsvn_client calculation.

* subversion/libsvn_client/ra.c
  (repos_locations): Optimize common diff ra request for diff for the old
    location of the repository root.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496468 13f79535-47bb-0310-9956-ffa450edef68
* subversion/include/private/svn_repos_private.h
  (svn_repos__validate_prop): Rewrite doc string, mainly to document that
    any prop may be deleted since r1495432, also to clarify.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496469 13f79535-47bb-0310-9956-ffa450edef68
Add new 'http-chunked-requests' configuration option to control using
of chunked transfer encoding for HTTP/1.1 servers.

* subversion/include/svn_config.h
  (SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS): New.

* subversion/libsvn_ra_serf/ra_serf.h
  (svn_ra_serf__session_t): Add USING_CHUNKED_REQUESTS flag.

* subversion/libsvn_ra_serf/serf.c
  (load_config): Parse 'http-chunked-requests' configuration option.

* subversion/libsvn_ra_serf/util.c
  (setup_serf_req): Set Content-Length if USING_CHUNKED_REQUESTS is zero.

* subversion/libsvn_subr/config_file.c
  (svn_config_ensure): Mention 'http-chunked-requests' in 'servers' file 
   template.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496470 13f79535-47bb-0310-9956-ffa450edef68
Restore the ability to run tests with exclusive working copy locks.
This functionality was turned on by default between r1493097 and r1496437.
It can now be enabled via a new --exclusive-wc-locks test option,
or like this when using 'make check': make check EXCLUSIVE_WC_LOCKS=1

* Makefile.in: Handle EXCLUSIVE_WC_LOCKS parameter.

* build/run_tests.py:
  (usage, main): Add --exclusive-wc-locks option.
  (TestHarness): Add exclusive_wc_locks parameter to constructor.
   Set svntest.main.options.exclusive_wc_locks based on it.

* subversion/tests/cmdline/svntest/main.py
  (create_config_dir): Add exclusive_wc_locks parameter. If TRUE, enable
   exclusive working copy locking in the client configuration.
  (TestSpawningThread): Handle --exclusive-wc-locks option.
  (_create_parser): Add --exclusive-wc-locks option.
  (execute_tests): Pass the exclusive_wc_locks option to create_config_dir().


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496475 13f79535-47bb-0310-9956-ffa450edef68
Fix some property conflict inconsistencies in svn_wc_conflict_description3_t.

The property reject file path used to be stored in the 'their_abspath' field.
Use a new 'prop_reject_abspath' field instead. And instead of storing
"their abspath" in the 'merged_file' field, use the 'their_abspath' field.

For now, expose these changes only to callers of svn_wc__read_conflicts().
Show converted svn_wc_conflict_description2_t structures to everyone else.

* subversion/include/svn_wc.h
  (svn_wc_conflict_description3_t): Add prop_reject_abspath.

* subversion/libsvn_wc/conflicts.c
  (resolve_text_conflict,
   svn_wc__conflict_invoke_resolver): Use svn_wc_conflict_description3_t,
    but hide it from the conflict callback for now.
  (read_text_conflict_desc, read_tree_conflict_desc,
   read_prop_conflict_desc): Return svn_wc_conflict_description3_t.
    For prop conflicts, use 'prop_reject_abspath' and 'their_abspath' as above.
  (svn_wc__read_conflicts): Return an array of svn_wc_conflict_description3_t.
  (conflict_status_walker): Adjust this caller of svn_wc__read_conflicts().
   Hide svn_wc_conflict_description3_t from the conflict callback for now.

* subversion/libsvn_wc/entries.c
  (read_one_entry): Adjust this caller of svn_wc__read_conflicts().
   Hide svn_wc_conflict_description3_t from callers.

* subversion/libsvn_wc/info.c
  (build_info_for_node, svn_wc__get_info): Adjust these callers of
    svn_wc__read_conflicts(). Hide svn_wc_conflict_description3_t from callers.

* subversion/libsvn_wc/tree_conflicts.c
  (svn_wc__get_tree_conflict): Adjust this caller of svn_wc__read_conflicts().
   Hide svn_wc_conflict_description3_t from callers.

* subversion/libsvn_wc/util.c
  (svn_wc__cd3_to_cd2): Convert cd3 property conflicts to the cd2 type:
   Map cd3->prop_reject_abspath to cd2->their_abspath,
   and map cd3->their_abspath to cd2->merged_file.

* subversion/libsvn_wc/wc.h
  (svn_wc__read_conflicts): Adjust docstring, this function now returns an
    array with elements of type svn_wc_conflict_description3_t *.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496481 13f79535-47bb-0310-9956-ffa450edef68
* tools/dev/unix-build/Makefile.svn: Enable exclusive wc locks during test
   runs in my own dev builds and for the bb-openbsd bot.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496487 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/conflicts.c
  (svn_wc__read_conflicts): Use svn_wc_conflict_description3_t* for sizeof()
    when allocating conflicts array. No functional change.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496527 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/conflicts.c
  (read_prop_conflict_descs, svn_wc__read_conflicts): Put a space between
   'svn_wc_conflict_description3_t' and '*'. Cosmetic change only.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496528 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/conflicts.c
  (generate_prop_conflict): Remove unneeded empty lines, fix space-before-paren.
   No functional change.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496529 13f79535-47bb-0310-9956-ffa450edef68
Add a load of boilerplate onto JavaHL's RA commit editor.

* build.conf (private-built-includes): Add javah's generated CommitEditor.h.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* ISVNRemote.java (ISVNRemote.getCommitEditor): Update interface and docstring.
  (ISVNRemote.status): Renamed from ISVNRemote.doStatus.
  Update boilerplate comments.
* remote/RemoteSession.java (RemoteSession.editor): Replaces set of editors.
  (ISVNRemote.dispose): Update, only one editor at a time can be active.
  (ISVNRemote.getCommitEditor): Update implementation.
  (RemoteSession.disposeEditor): New; called by CommitEditor.dispose.
  (ISVNRemote.status): Renamed from ISVNRemote.doStatus.
  Update boilerplate comments.
* remote/CommitEditor.java: Implement all unimplemented ISVNEditor methods
   as wrappers around native methods.
  (CommitEditor.CommitEditor): Add RemoteSession parameter ...
  (CommitEditor.session): ... and store it here.
  (CommitEditor.finalize): Add native method.
  
[in subversion/bindings/javahl/native]
* CommitEditor.h, CommitEditor.cpp,
  LockTokenTable.h, LockTokenTable.cpp,
  org_apache_subversion_javahl_remote_CommitEditor.cpp: New files.
* RemoteSession.h (RemoteSession): Make CommitEditor a friend.
  (RemoteSession::status): Renamed from RemoteSession::doStatus.
  Update boilerplate comments.
* RemoteSession.cpp
  (RemoteSession::status): Renamed from RemoteSession::doStatus.
  Update boilerplate comments.
* org_apache_subversion_javahl_remote_RemoteSession.cpp
  (Java_org_apache_subversion_javahl_remote_RemoteSession_nativeDispose):
   Update JNIEntry statement;
  (Java_org_apache_subversion_javahl_remote_RemoteSession_status):
   Renamed from ..._doStatus.
  Update boilerplate comments.

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* SVNRemoteTests.java
  (SVNRemoteTests.testGetCommitEditor,
   SVNRemoteTests.testDisposeCommitEditor): Update test cases.
  (SVNRemoteTests.testChangeRevpropAtomic): Use the new
   ClientException.getAllMessages method.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496533 13f79535-47bb-0310-9956-ffa450edef68
Following up on r1496468 hand down the known head version from the callers
when available.

* subversion/libsvn_client/ra.c
  (repos_locations): Add argument. Add no-op test to document exceptional
    value.
  (svn_client__repos_location): Update caller.
  (svn_client__repos_locations): Update caller.

Suggested by: ivan

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496570 13f79535-47bb-0310-9956-ffa450edef68
Do not create too many global references in JavaHL.

[in subversion/bindings/javahl/native]
* OperationContext.cpp (OperationContext::getSelf): Do not create a new
  global reference to the Java context object; the C++ context already
  maintains one.
* SVNClient.cpp (SVNClient::openRemoteSession): Adjust caller.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496729 13f79535-47bb-0310-9956-ffa450edef68
The remote API in JavaHL has to maintain references to the commit
callback for a moderately long time, so do maintain a global reference
to the obejct.

[in subversion/bindings/javahl/native]
* CommitCallback.h (CommitCallback.m_callback): Make protected.
  (PersistentCommitCallback): New, variant of CommitCallback.
* CommitCallback.cpp: Implement PersistentCommitCallback.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496730 13f79535-47bb-0310-9956-ffa450edef68
Refactor the JavaHL commit editor and implement EV2 copy.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* remote/CommitEditor.java: Remove native implementaiton methods;
   make the ISVNRemote interface implementation native instead.

[in subversion/bindings/javahl/native]
* CommitEditor.h (CommitEditor): Remove session parameter from the
   editor API methods ... 
  (CommitEditor::m_session): ... and remember the session here instead.
  (CommitEditor::m_callback): Change type to PersistentCommitCallback.
  (CommitEditor::m_extra_baton): Remove.
  (CommitEditor::get_copysrc_kind_cb,
   CommitEditor::m_callback_session,
   CommitEditor::m_callback_session_url,
   CommitEditor::m_callback_session_uuid): Helpers for EV2/EV1 shims.

* CommitEditor.cpp:
  (CommitEditor::CommitEditor): Use private RA function to create editor.
  (CommitEditor::copy, CommitEditor::complete, CommitEditor::abort):
   Implement EV2 edit operations.
  Rework boilerplate code for other EV2 operations.

* org_apache_subversion_javahl_remote_CommitEditor.cpp: Remove "native" from
   the names of wrapper functions that changed in CommitEditor.java.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1496733 13f79535-47bb-0310-9956-ffa450edef68
Implement EV2 add_absent and delete ops in JavaHL RA commit editor.

[in subversion/bindings/javahl/native]
* EnumMapper.h, EnumMapper.cpp (EnumMapper::toNodeKind): New;
   converts NodeKind enum to svn_node_kind_t.
* CommitEditor.cpp (CommitEditor::addAbsent, CommitEditor::remove): Implement.
  (CommitEditor::addSymlink, CommitEditor::alterSymlink):
   Mark "permanently" not implemented (i.e., until the EV2 impl has them).

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* SVNRemoteTests.java (SVNRemoteTests.CommitContext): New helper class.
  (SVNRemoteTests.testEditorCopy, SVNRemoteTests.testEditorDelete): New tests.


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