Make multi-revision-range merges stop early if a range causes a conflict.
Make multi-revision-range merges stop early if a range causes a conflict.

We already did this for text and prop conflicts, but not for tree conflicts.
Also, the merge was only aborted if a continuous revision ranges was split
due to merge tracking. Multiple ranges passed in from the command line were
all merged regardless of whether a conflict occurred while merging one of
these ranges.

The new behaviour makes it easier to resolve conflicts one-by-one.
The old behaviour could lead to nodes being both tree-conflicted
and text-conflicted, for instance. This is no longer possible.

Discussed briefly with gstein, jerenkrantz, and philip in Ireland.

Surprisingly, no tests are failing due to this change.

* subversion/libsvn_client/merge.c
  (tree_conflict, tree_conflict_on_add): Add victim paths to the merge
   baton's list of conflicted paths, which is checked later to see whether
   the multi-range merge should be aborted.
  (do_directory_merge): New parameter ABORT_ON_CONFLICTS which, if true,
   causes an SVN_ERR_WC_FOUND_CONFLICT error if a conflict occurred.
   This is necessary since do_directory_merge() is called for each revision
   range separately and does not know if it might be called again to merge
   additional ranges. It already handled the case where the range it is merging
   is split up due to merge-tracking, and this behaviour is not changed.
  (do_merge): While looping over revision ranges, set the ABORT_ON_CONFLICTS
   parameter of do_directory_merge() depending on whether there are ranges
   remaining to be merged.

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion