Add a test covering the 'svnadmin verify' behavior for packed repositories.

First of all, there is no explicit test for this scenario (yes, there is an
option to execute the tests with both --fsfs-sharding and --fsfs-packing, but
these switches are disabled by default and that is not something "explicit").

Secondly, this test runs against both FSFS and FSX and allows to quickly
determine some kinds of repository corruptions upon packing.  For example,
a non-deterministically reproducible corruption from r1575642 would have
been detected much earlier due to this test (which would fail on all
platforms / regardless of compiler options).

* subversion/tests/cmdline/svnadmin_tests.py
  (verify_packed): New test covering the 'svnadmin verify' behavior for
    packed repositories.
  (test_list): Add reference to new test.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576165 13f79535-47bb-0310-9956-ffa450edef68
Port the txn-list-lock fix (r1568953) from FSFS to FSX.  The txn-list-lock
mutex is just a regular mutex that is required to work with a non thread
safe object.  Hence it should always be enabled.
Also see http://svn.haxx.se/dev/archive-2014-02/0175.shtml

* subversion/libsvn_fs_x/fs.c
  (x_serialized_init): Unconditionally enable the TXN_LIST_LOCK mutex
    when using a threaded APR.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576167 13f79535-47bb-0310-9956-ffa450edef68
Fix an oversight in the FSX string table matching routine.  There is a
warning about this ("Conditional jump or move depends on uninitialised
value") that can be triggered by valgrind'ing the 'fs-x-pack-test 1' without
this changeset.

* subversion/libsvn_fs_x/string_table.c
  (match_length): Initialize LEN to minimal of two lengths instead of always
    setting it to the length of the second string.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576168 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/svnadmin_tests.py
  (verify_windows_paths_in_repos): Call compare_and_display_lines() with a
    proper LABEL argument.  We are checking the STDOUT, not STDERR.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576169 13f79535-47bb-0310-9956-ffa450edef68
Open delta source and target streams lazily in the Ev2 edit receiver.

Previously, when driving an Ev2 status editor through the Ev1->Ev2 adapter,
an empty temporary file would be created for every file mentioned in the
status report, even though a status edit drive does not transmit any text
deltas.

* subversion/libsvn_delta/compat.c
  (open_delta_base, open_delta_target): Lazy-open stream handlers for opening
   the delta source and target files.
  (ev2_apply_textdelta): Open the delta source and target lazily.
   Remove the now-unused local variable 'scratch_pool'.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576277 13f79535-47bb-0310-9956-ffa450edef68
Remove an obsolete test. The original problem can't occur any more since we
switched to resolving conflicts after the update instead of during the update.

The test itself was broken (and therefore marked Skip) for interactive
handling changes.

* subversion/tests/cmdline/update_tests.py
  (eof_in_interactive_conflict_resolver): Remove test.
  (test_list): Remove eof_in_interactive_conflict_resolver.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576282 13f79535-47bb-0310-9956-ffa450edef68
Follow-up to r1576277: JavaHL's current status editor implementation
relies on seeing a file with (apparently) new contents of a file to
detect text changes.

* subversion/libsvn_delta/compat.c (ev2_apply_textdelta):
   Open the delta target file with the open-on-close flag enabled,
   so that the file does get created even if there is no text delta
   in the editor drive; but it also gets closed immediately, so that
   the handle does not stay in use indefinitely.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576283 13f79535-47bb-0310-9956-ffa450edef68
Avoid some unneeded wc-db handling for the single node status handling.

* subversion/libsvn_wc/status.c
  (assemble_status): Remove support for NULL info argument.
  (internal_status): Retrieve the single node status directly instead of
    using a separate read operation first. Remove some error handling
    for cases that can't happen since single db (with the root check
    we already have).


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576290 13f79535-47bb-0310-9956-ffa450edef68
Stop casting away 'const' in a few places where it's easy to do so. Reduces
compiler warnings with GCC.

* subversion/libsvn_fs_x/id.c
  (svn_fs_x__id_node_id,
   svn_fs_x__id_copy_id,
   svn_fs_x__id_txn_id,
   svn_fs_x__id_noderev_id,
   svn_fs_x__id_rev,
   svn_fs_x__id_item,
   svn_fs_x__id_is_txn,
   svn_fs_x__id_unparse,
   svn_fs_x__id_eq,
   svn_fs_x__id_check_related,
   svn_fs_x__id_copy): Don't cast away 'const'.

* subversion/libsvn_fs_fs/id.c
  (svn_fs_fs__id_node_id,
   svn_fs_fs__id_copy_id,
   svn_fs_fs__id_txn_id,
   svn_fs_fs__id_rev_item,
   svn_fs_fs__id_rev,
   svn_fs_fs__id_item,
   svn_fs_fs__id_is_txn,
   svn_fs_fs__id_unparse,
   svn_fs_fs__id_eq,
   svn_fs_fs__id_check_related,
   svn_fs_fs__id_copy): Same.

* subversion/libsvn_fs_fs/transaction.c
  (fnv1a_checksum_finalize): Same.

* subversion/libsvn_fs_fs/verify.c
  (expected_streamed_checksum): Same.

* subversion/libsvn_subr/hash.c
  (hashfunc_compatible): Same.

* subversion/libsvn_subr/temp_serializer.c
  (svn_temp_serializer__add_string): Same.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576294 13f79535-47bb-0310-9956-ffa450edef68
Resolve a long standing inconsistency between svn_wc_status3() and
svn_wc_walk_status when the explicit target isn't visible in the wc
(not present, excluded, or doesn't exist) and doesn't exist on disk.

In this case the node wasn't reported, as this case was accidentally
handled as not present descendants, which should really be hidden
from callers.

This resolves a small argument parsing regression in commit since
Subversion 1.8.

* subversion/libsvn_wc/status.c
  (one_child_status): Only skip descendants that don't exist; not the root
    of the status operation.

* subversion/tests/cmdline/commit_tests.py
  (commit_unversioned): Remove XFail marker.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576308 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_ra_serf/serf.c
  (svn_ra_serf__open): Following up on r1575319, add comment.

Suggested by: ivan


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576313 13f79535-47bb-0310-9956-ffa450edef68
* subversion/bindings/javahl/native/StatusCallback.cpp
  (StatusCallback::callback): Following up on r1576308, fix JavaHL assumptions
    around that it always used the status walker for single status results.

[Reverted in r1576341]



git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576328 13f79535-47bb-0310-9956-ffa450edef68
Follow up to r1576277 and r1576283: Avoid creating empty temporary files with
file contents in the Ev2 shims by introducing an internal flag that indicates
that contents have changed.

* subversion/libsvn_delta/compat.c
  (struct change_node): Added boolean member 'contents_changed'.
  (process_actions): If we were notified about a contents change, but did
   not receive a delta (for example, during a status drive), return an empty
   in-memory stream and related empty checksum.
  (ev2_apply_textdelta): Flag that the contents have changed, and turn off
   the open-on-close flag on the lazy open of the text delta target stream.
   This avoids creating a temporary file on disk if no delta was received.
  (add_file_cb, alter_file_cb): Set the contents_changed flag along with
   the contents file path.
  (apply_change): Check both contents_changed and contents_abspath.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576329 13f79535-47bb-0310-9956-ffa450edef68
With WC-NG we moved to the notion that the delete of a tree is really
represented by the delete of its root. This commit removes an obsolete
check in the legacy 'non operation commit' that in some cases forbid
to delete directories that had descendants when passing a restricted
depth.

(The check itself was interesting before we had a single db world when
 deleted directories still existed on disk and needed lock handling...
 This case is not even reachable from 'svn' since 1.7)

This has the nice side effect that it allows removing more legacy code,
based on the svn_wc_entry_t world.

* subversion/include/private/svn_wc_private.h
  (svn_wc__node_get_schedule): Remove function.

* subversion/libsvn_client/commit.c
  (check_nonrecursive_dir_delete): Remove function that limited commit
    capabilities in a mostly unused legacy mode.
  (svn_client_commit6): Update caller.

* subversion/libsvn_wc/node.c
  (svn_wc__internal_node_get_schedule,
   svn_wc__node_get_schedule): Remove unused functions.

* subversion/libsvn_wc/wc.h
  (svn_wc__internal_node_get_schedule): Remove function.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576335 13f79535-47bb-0310-9956-ffa450edef68
Tweak 'make davautocheck' and 'make svnserveautocheck' to work on
Solaris.

* Makefile.in:
  (davautocheck, svnserveautocheck): Use the configured shell rather
   than invoking the scripts directly.

* subversion/tests/cmdline/davautocheck.sh: Avoid "grep -q" as it is
   not portable.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576339 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/authz_tests.py
  (wc_delete): Following up on r1576308, hide the more security sensitive error
    we produce now on deleting a non existing node by using 'svn rm --force'


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576340 13f79535-47bb-0310-9956-ffa450edef68
Adjust JavaHL tests for the semantic change made in r1576308.

* subversion/bindings/javahl/native/StatusCallback.cpp: Revert r1576328.
* subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
  (BasicTests.testBasicStatus): Adjust test verification.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576341 13f79535-47bb-0310-9956-ffa450edef68
* subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
  (testBasicStatus): Following up on r1576341, apply a similar fix here.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576347 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/davautocheck.sh: Remove superfluous use of
   ldd - on many platorms it was invoked on the libtool script rather
   than the binary and so achieved nothing.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1576350 13f79535-47bb-0310-9956-ffa450edef68
Remove a few explicit casts to (void *) where implicit is sufficient.

* subversion/libsvn_diff/diff_file.c
  (svn_diff_file_options_parse): As above.

* subversion/libsvn_fs_fs/temp_serializer.c
  (svn_fs_fs__deserialize_properties,
   svn_fs_fs__replace_dir_entry,
   svn_fs_fs__deserialize_mergeinfo): As above.

* subversion/libsvn_fs_x/temp_serializer.c
  (svn_fs_x__deserialize_properties,
   svn_fs_x__replace_dir_entry,
   svn_fs_x__deserialize_mergeinfo): As above.

* subversion/libsvn_ra_svn/client.c
  (find_tunnel_agent): As above.

* subversion/libsvn_subr/sorts.c
  (heap_is_less): As above.

* subversion/mod_dav_svn/reports/replay.c
  (add_file_or_directory, open_file_or_directory): As above.

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