Author: svn-role
Date: Fri Dec  6 04:00:10 2019
New Revision: 1870899

URL: http://svn.apache.org/viewvc?rev=1870899&view=rev
Log:
Merge r1851920 from trunk:

 * r1851920
   Remove a useless common ancestor search from the conflict resolver.
   Justification:
     Current behaviour is inefficient and could lead to dubious conflicts.
   Votes:
     +1: stsp, rhuijben

Modified:
    subversion/branches/1.11.x/   (props changed)
    subversion/branches/1.11.x/STATUS
    subversion/branches/1.11.x/subversion/libsvn_client/conflicts.c

Propchange: subversion/branches/1.11.x/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1851920

Modified: subversion/branches/1.11.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.11.x/STATUS?rev=1870899&r1=1870898&r2=1870899&view=diff
==============================================================================
--- subversion/branches/1.11.x/STATUS (original)
+++ subversion/branches/1.11.x/STATUS Fri Dec  6 04:00:10 2019
@@ -32,13 +32,6 @@ Veto-blocked changes:
 Approved changes:
 =================
 
- * r1851920
-   Remove a useless common ancestor search from the conflict resolver.
-   Justification:
-     Current behaviour is inefficient and could lead to dubious conflicts.
-   Votes:
-     +1: stsp, rhuijben
-
  * r1855419
    Fix conflict resolver bug where local and incoming edits got swapped.
    Justification:

Modified: subversion/branches/1.11.x/subversion/libsvn_client/conflicts.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.11.x/subversion/libsvn_client/conflicts.c?rev=1870899&r1=1870898&r2=1870899&view=diff
==============================================================================
--- subversion/branches/1.11.x/subversion/libsvn_client/conflicts.c (original)
+++ subversion/branches/1.11.x/subversion/libsvn_client/conflicts.c Fri Dec  6 
04:00:10 2019
@@ -8883,8 +8883,8 @@ resolve_incoming_move_dir_merge(svn_clie
   struct conflict_tree_incoming_delete_details *details;
   apr_array_header_t *possible_moved_to_abspaths;
   const char *moved_to_abspath;
-  svn_client__pathrev_t *yca_loc;
-  svn_opt_revision_t yca_opt_rev;
+  const char *incoming_old_url;
+  svn_opt_revision_t incoming_old_opt_rev;
   svn_client__conflict_report_t *conflict_report;
   svn_boolean_t is_copy;
   svn_boolean_t is_modified;
@@ -8977,30 +8977,6 @@ resolve_incoming_move_dir_merge(svn_clie
       goto unlock_wc;
     }
 
-  /* Now find the youngest common ancestor of these nodes. */
-  err = find_yca(&yca_loc, victim_repos_relpath, victim_peg_rev,
-                 moved_to_repos_relpath, moved_to_peg_rev,
-                 repos_root_url, repos_uuid,
-                 NULL, ctx, scratch_pool, scratch_pool);
-  if (err)
-    goto unlock_wc;
-
-  if (yca_loc == NULL)
-    {
-      err = svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
-                              _("Cannot resolve tree conflict on '%s' "
-                                "(could not find common ancestor of '^/%s@%ld' 
"
-                                " and '^/%s@%ld')"),
-                              svn_dirent_local_style(local_abspath,
-                                                     scratch_pool),
-                              victim_repos_relpath, victim_peg_rev,
-                              moved_to_repos_relpath, moved_to_peg_rev);
-      goto unlock_wc;
-    }
-
-  yca_opt_rev.kind = svn_opt_revision_number;
-  yca_opt_rev.value.number = yca_loc->rev;
-
   err = verify_local_state_for_incoming_delete(conflict, option, ctx,
                                                scratch_pool);
   if (err)
@@ -9032,7 +9008,12 @@ resolve_incoming_move_dir_merge(svn_clie
       if (err)
         goto unlock_wc;
 
-      /* Merge YCA_URL@YCA_REV->MOVE_TARGET_URL@MERGE_RIGHT into move target. 
*/
+      /* Merge INCOMING_OLD_URL@MERGE_LEFT->MOVE_TARGET_URL@MERGE_RIGHT
+       * into move target. */
+      incoming_old_url = apr_pstrcat(scratch_pool, repos_root_url, "/",
+                                     incoming_old_repos_relpath, SVN_VA_NULL);
+      incoming_old_opt_rev.kind = svn_opt_revision_number;
+      incoming_old_opt_rev.value.number = incoming_old_pegrev;
       move_target_url = apr_pstrcat(scratch_pool, repos_root_url, "/",
                                     get_moved_to_repos_relpath(details,
                                                                scratch_pool),
@@ -9040,7 +9021,7 @@ resolve_incoming_move_dir_merge(svn_clie
       incoming_new_opt_rev.kind = svn_opt_revision_number;
       incoming_new_opt_rev.value.number = incoming_new_pegrev;
       err = svn_client__merge_locked(&conflict_report,
-                                     yca_loc->url, &yca_opt_rev,
+                                     incoming_old_url, &incoming_old_opt_rev,
                                      move_target_url, &incoming_new_opt_rev,
                                      moved_to_abspath, svn_depth_infinity,
                                      TRUE, TRUE, /* do a no-ancestry merge */


Reply via email to