Fix issue #4132 'merge of replaced source asserts'.

* subversion/libsvn_client/merge.c

  (find_gaps_in_merge_source_history): Return early if there can't possibly
   be a gap.

* subversion/tests/cmdline/merge_tests.py

  (svnmucc_abuse_1): Remove XFail decorator, adjust comment re failure
   status.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453425 13f79535-47bb-0310-9956-ffa450edef68
Fix issue #4138 'replacement in merge source not notified correctly'.

* subversion/libsvn_client/merge.c

  (remove_source_gap): New.

  (notify_merge_begin,
   record_mergeinfo_for_dir_merge): Remove gap revisions from merge
   notifications.

* subversion/tests/cmdline/merge_tests.py

  (merge_source_with_replacement): Remove XFail decorator, adjust failure
   status comments, and expand test to cover a reverse merge.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453635 13f79535-47bb-0310-9956-ffa450edef68
* subversion/tests/cmdline/merge_tests.py
  (merge_source_with_replacement): Add diagram from #4138 desc6 as a comment,
   and tweak wording in another comment for clarity.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453753 13f79535-47bb-0310-9956-ffa450edef68
* subversion/mod_dav_svn/liveprops.c
  (insert_prop_internal): Reject operations on getcontentlength and
   getcontenttype properties if the resource is an activity.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453780 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/workqueue.c
  (svn_wc__wq_build_file_install): Obtain a better wri_abspath to avoid
    some filestats that made this function visible while profiling checkouts.
    (This reduces the cpu time in and below this function with about 80%)


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453791 13f79535-47bb-0310-9956-ffa450edef68
Help the debugger, profiler and compiler a bit by replacing several uses of
svn_wc__db_with_txn() with the SVN_WC__DB_WITH_TXN() macro.

As this makes the function call the transaction function directory instead of
via the api this reduces the amount of (call-)stack used. The compiler can use
this to perform some inlining and calling method optimizations, while my
profiler hides more noise from its reports.

* subversion/libsvn_wc/wc_db.c
  (insert_base_node,
   insert_working_node): Use typed baton argument.

  (svn_wc__db_base_add_directory,
   svn_wc__db_base_add_incomplete_directory,
   svn_wc__db_base_add_incomplete_directory,
   svn_wc__db_base_add_symlink,
   add_excluded_or_not_present_node): Update calling.

  (insert_external_node): Use typed baton argument.
  (svn_wc__db_external_add_file,
   svn_wc__db_external_add_dir): Update calling.

  (svn_wc__db_op_copy_dir): Update calling.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453805 13f79535-47bb-0310-9956-ffa450edef68
Following up on r1453805, convert all but one remaining callers of
svn_wc__db_with_txn to SVN_WC__DB_WITH_TXN().

The remaining caller uses multiple callbacks combined.

* subversion/libsvn_wc/wc_db.c
  (svn_wc__db_op_copy_file,
   svn_wc__db_op_add_directory,
   svn_wc__db_op_add_file,
   svn_wc__db_op_add_symlink,
   svn_wc__db_op_revert,
   svn_wc__db_op_delete): Update caller.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453858 13f79535-47bb-0310-9956-ffa450edef68
Handle 'svn:ignore' and 'svn:global-ignores' values as a single list for
status processing and for svn_wc_get_ignores2().

This patch simplifies some status code and makes a very expensive check per
directory that contains unversioned files cheaper.

On my profile working copy with unversioned files in every directory, but
no local changes this accounts for a +- 6% performance improvement on
'svn status'
(The amount of CPU time spend on obtaining these properties was reduced by 50%)

* subversion/libsvn_wc/props.c
  (svn_wc__get_iprops): Update caller.

* subversion/libsvn_wc/status.c
  (collect_ignore_patterns): Obtain a single list of patterns. Remove had_props
    optimization as that doesn't help for inherited properties anyway.
  (send_unversioned_item,
   one_child_status,
   get_dir_status): Remove inherited specialized code.

  (svn_wc_get_ignores2): Update code to really obtain all ignore patterns, as
    documented.

* subversion/libsvn_wc/wc_db.c
  (db_read_inherited_props): Add actual_props argument. Constify output array.
    Use db query directly to calculate whether the parent is what it should be
    and inherited property eligability with a single query. Obtain actual props
    if requested.
    Note that we are not really interested in switched paths here, but just if
    the parent directory is the parent of the child we are obtaining information
    for.

  (svn_wc__db_read_inherited_props): Obtain actual_props if requested.

* subversion/libsvn_wc/wc_db.h
  (svn_wc__db_read_inherited_props): Update documentation and prototype.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453925 13f79535-47bb-0310-9956-ffa450edef68
Following up on r1453925, update some comments.

* subversion/libsvn_wc/status.c
  (collect_ignore_patterns,
   send_unversioned_item,
   one_child_status): Update doc strings.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453935 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/status.c
  (one_child_status): Remove mention of non-existent argument in doc string.



git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453940 13f79535-47bb-0310-9956-ffa450edef68
Following up on r1453925, resolve a potentially uninitialized variable problem
caused by using the same name for an argument and a local variable. Apply
further query optimization by caching the properties in ram.

* subversion/libsvn_wc/wc_db.c
  (db_get_changed_props): New function.
  (db_read_inherited_props): Use db_get_changed_props to avoid querying the
    same NODES record again for every parent directory. Remove variable
    shadowing.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453948 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/status.c
  (one_child_status):
     Don't copy basename when we are not keeping it in a variable anyway.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453982 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/update_editor.c
  (open_root): Get base information earlier so that the move-edit
   tree-conflict gets fully populated.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453992 13f79535-47bb-0310-9956-ffa450edef68
* subversion/libsvn_wc/status.c (get_dir_status): Remove unused variable.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1453994 13f79535-47bb-0310-9956-ffa450edef68
Allow ipv6 addresses encoded in urls in the common
http://[::1]/svn/repos format.
by extending our canonical urls a tiny bit.

* subversion/libsvn_subr/dirent_uri.c
  (canonicalize,
   svn_uri_is_canonical): Allow lower case [] ipv6 addresses.

* subversion/tests/libsvn_subr/dirent_uri-test.c
  (uri_canonical_tests): Add a few ipv6 testcases.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1454047 13f79535-47bb-0310-9956-ffa450edef68
Eliminate an unnecessary OPTIONS request in HTTPv1 communications.
(Not only is it unnecessary, but sometimes it's aimed at an unreadable
URL, causing commits to fail unnecessarily.)

* subversion/libsvn_ra_serf/commit.c
  (open_root): Only call svn_ra_serf__v1_get_activity_collection() if
    we haven't already cached an activity collection URL.  (And cache
    its result if do have to call it.)

* subversion/libsvn_ra_serf/options.c
  (svn_ra_serf__exchange_capabilities): Cache the activity collection
    URL if one is reported.

* subversion/libsvn_ra_serf/ra_serf.h
  (svn_ra_serf__session_t): Add 'activity_collection_url' member.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1454088 13f79535-47bb-0310-9956-ffa450edef68
Add a regression test for parts of issue #3231.

Prompted by: kfogel

* subversion/tests/cmdline/basic_tests.py
  (peg_rev_on_non_existent_wc_path): New XFail test.
  (test_list): Run it.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1454179 13f79535-47bb-0310-9956-ffa450edef68
Add a test for a part of issue #3121 that appears to be working now.

* subversion/tests/cmdline/prop_tests.py
  (peg_rev_base_working): New test.
  (test_list): Run it.


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

* subversion/tests/cmdline/basic_tests.py
  (peg_rev_on_non_existent_wc_path): Remove a TODO comment that is addressed.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1454192 13f79535-47bb-0310-9956-ffa450edef68
Fix issue #4332 as it applies to HTTPv1-speaking servers.

* subversion/libsvn_client/delete.c
  (struct repos_deletables_t): New structure for organizing stuff
    being deleted from a given repository.
  (delete_urls_multi_repos): Reorganize this function around the use
    of a single hash of struct repos_deletables_t * objects, applying
    also the following corrections/optimizations: a) use an iteration
    subpool for handling deletions associated with each repository, b)
    collapse redundant and overlapping delete targets to minimize the
    required work, and c) anchor the commit at the lowest possible
    repository directory rather than at the repository root.

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