Expose utility functions in JavaHL. Start by providing a file-based merge tool.

* build.conf (private-built-includes):
   Add org_apache_subversion_javahl_util_DiffLib.h.
  (javahl-java): Add ...javahl/util and reorder modules alphabetically.
  (javahl-callback-javah, javahl-remote-javah, javahl-callback-javah):
   Reorder modules alphabetically.
  (javahl-util-javah): New module.

* Makefile.in (javahl): Add javahl-remote-javah and javahl-util-javah.
  (doc-javahl): Add org.apache.subversion.javahl.util.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* SVNUtil.java: New Java class SVNUtil.
  (SVNUtil.DiffOptions): New nested class.
  (SVNUtil.ConflictDisplayStyle): New nested enumeration.
  (SVNUtil.FileMerge): New static methods.
* util/DiffLib.java: New Java class util.DiffLib.

[in subversion/bindings/javahl/native]
* org_apache_subversion_javahl_util_DiffLib.cpp:
   Native method wrappers for the util.DiffLib class.
  (Java_org_apache_subversion_javahl_util_DiffLib_nativeFileMerge):
   Native implementation of util.DiffLib.FileMerge.

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* UtilTests.java: New test suite for the SVNUtil class.
  (UtilTests.testFileMerge): New test case.
* RunTests.java: Add UtilTests to the test suite list.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512354 13f79535-47bb-0310-9956-ffa450edef68
* subversion/bindings/javahl/native/CommitEditor.cpp
  (CommitEditor::provide_base_cb): Use SVN_INVALID_REVNUM rather than
   NULL to fix a compiler warning.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512392 13f79535-47bb-0310-9956-ffa450edef68
* tools/dist/nominate.pl
  (nominate_main): Handle log messages with no preamble, such as this one.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512393 13f79535-47bb-0310-9956-ffa450edef68
* tools/dist/backport.pl
  (vote): Do not avoid reprompting on entries that were edited or voted +0 on
    in the current interactive session.  Sometimes I find it useful to be
    re-prompted for them, and the failure mode is that I'd see the entry again
    in the next invocation, choose 'N' and not be re-prompted for it thereafter.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512397 13f79535-47bb-0310-9956-ffa450edef68
* tools/dist/nominate.pl
  (nominate_main): Add comments, following up on r1512393.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512400 13f79535-47bb-0310-9956-ffa450edef68
svntest: Usability fix for manual (selective) runs.

* subversion/tests/cmdline/svntest/main.py
  (execute_tests): Strip trailing commas from the "test function name" argument
    before matching it with the known function names.  That will allow me to
    copy-paste test names into the shell even if my terminal's "word selection"
    includes the comma in the highlighted-by-double-click range.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512412 13f79535-47bb-0310-9956-ffa450edef68
mod_dav_svn: Fix longstanding bug that requests are mapped to the filesystem.

mod_dav_svn didn't have a translate_name hook so the default processing would
map our requests to %{DOCUMENT_ROOT}/%{LOCATION_PATH} where LOCATION_PATH is
the path configured on the Location block that SVNPath/SVNParentPath is in.
Typically this path wouldn't exist and even if it did exist it's content
would not be served.

This meant that Directory blocks access control applied to SVN requests and
log formats using %f would log this path as though it was the path for the
file that httpd served.

Users might have been relying on this behavior but Directory should never
have applied.  Users using this behavior should move any access control
directives to the Location block rather than the Directory block.

* subversion/mod_dav_svn.c
  (dav_svn__translate_name): New function.
  (register_hooks): Register translate_name hook.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512432 13f79535-47bb-0310-9956-ffa450edef68
Fix info message from http core about missing filename.  Followup to r1512432.

* subversion/mod_dav_svn/mod_dav_svn.c
  (dav_svn__translate_name): Leave a note for map_to_storage hook.
  (dav_svn__map_to_storage): New function.
  (register_hooks): Register map_to_storage hook.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512471 13f79535-47bb-0310-9956-ffa450edef68
mod_dav_svn: Really hook map_to_storage LAST.  Followup to r1512471.

* subversion/mod_dav_svn/mod_dav_svn.c
  (register_hooks): Use APR_HOOK_LAST as intended.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512472 13f79535-47bb-0310-9956-ffa450edef68
Implement a file-based diff utility in JavaHL.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* SVNUtil.java (SVNUtil.FileDiff): New static method.
  (SVNUtil.FileMerge): Fix docstring.
* util/DiffLib.java (SVNUtil.FileDiff): Implement.
  (SVNUtil.nativeFileDiff): New native wrapper declaration.
  (SVNUtil.FileMerge): Tweak implementation.

[in subversion/bindings/javahl/native]
* org_apache_subversion_javahl_util_DiffLib.cpp
  (Java_org_apache_subversion_javahl_util_DiffLib_nativeFileDiff):
   Native implementation of SVNUtil.FileDiff.

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* UtilTests.java (UtilTests.fileContentsPrefix): Add terminating newline.
  (UtilTests.testFileDiff): New test case.
  (UtilTests.testFileMerge): Add newlines to file contents and adjust
   the expected result.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1512490 13f79535-47bb-0310-9956-ffa450edef68
Fix the subversion version check in FSX tests.

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c
  (file_hint_at_shard_boundary,
   test_info,
   test_reps): FSX is available in 1.9+ but not 1.8-

Found by: danielsh

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513012 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_diff/diff_file.c
  (map_or_read_file): Do not rely on apr_mmap_create() behavior to 
   initialize output parameter on error and initialize it explicitly.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513119 13f79535-47bb-0310-9956-ffa450edef68
Fail correctly if file passed to svn_diff_file_output_merge2() is larger 
than APR_SIZE_MAX. Otherwise we just truncate file length to apr_size_t on 
32-bit platform.

* subversion/libsvn_diff/diff_file.c
  (map_or_read_file): Change output argument type to apr_size_t instead of 
   apr_off_t. Fail if file length is larger than APR_SIZE_MAX.
  (svn_diff_file_output_merge2): Change SIZE variable type to apr_size_t.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513122 13f79535-47bb-0310-9956-ffa450edef68
Fix crash when updating in libsvn_wc/update_editor.c, window_handler().

* subversion/libsvn_wc/update_editor.c
  (window_handler): Remove temporary file only if it already created by
   lazy_open_target().


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513156 13f79535-47bb-0310-9956-ffa450edef68
* subversion/mod_dav_svn/mod_dav_svn.c
  (register_hooks): Fix type. No functional change.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513463 13f79535-47bb-0310-9956-ffa450edef68
Avoid repeating a string literal.

* subversion/mod_dav_svn/mod_dav_svn.c
  (NO_MAP_TO_STORAGE_NOTE): New macro.
  (dav_svn__translate_name, dav_svn__map_to_storage): Use macro.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513472 13f79535-47bb-0310-9956-ffa450edef68
Add a regression test for issue #4411, "parent-relative file external
can corrupt working copy".

* subversion/tests/cmdline/externals_tests.py
  (switch_parent_relative_file_external, test_list): New test.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513479 13f79535-47bb-0310-9956-ffa450edef68
Every write to packed revprops would wrongly add another newline
(empty entry) at the end of the respective manifest file.  This is
a scalability issue and does not affect correctness.

* subversion/libsvn_fs_fs/fs_fs.c
  (get_revprop_packname): don't add an empty path name after the last entry

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513874 13f79535-47bb-0310-9956-ffa450edef68
Add another FSFS revprop packing test.  This will FAIL and a
follow-up patch will fix the problem.

* subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
  (get_set_multiple_huge_revprops_packed_fs): new test
  (test_funcs): register new test

Suggested by: zhakov

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1513879 13f79535-47bb-0310-9956-ffa450edef68
When modifying packed revprops, we may need to split the pack file to
stay within the configured file size limits.  After the split, on of
the pack files will start at a later revision than the manifest.
Splitting the same pack again will resulted in the file names being
picked from the wrong manifest entries.

* subversion/libsvn_fs_fs/fs_fs.c
  (packed_revprops_t): store the revision of the first manifest entry
  (get_revprop_packname): set that new member
  (repack_stream_open): fix the calculation of the manifest entry index

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