Author: rhuijben
Date: Sun Feb  8 10:58:43 2015
New Revision: 1658147

URL: http://svn.apache.org/r1658147
Log:
Tweak error messages when trying to resolve move conflicts where the move
information is no longer recorded in wc.db.

* subversion/libsvn_wc/conflicts.c
  (resolve_tree_conflict_on_node): Tweak error messages in specific code paths.
    Except for the changed messages no functional changes.

Modified:
    subversion/trunk/subversion/libsvn_wc/conflicts.c

Modified: subversion/trunk/subversion/libsvn_wc/conflicts.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/conflicts.c?rev=1658147&r1=1658146&r2=1658147&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_wc/conflicts.c Sun Feb  8 10:58:43 2015
@@ -2769,7 +2769,7 @@ resolve_tree_conflict_on_node(svn_boolea
                                                             scratch_pool));
         }
       else if (reason == svn_wc_conflict_reason_moved_away
-              && action == svn_wc_conflict_action_edit)
+               && action == svn_wc_conflict_action_edit)
         {
           /* After updates, we can resolve local moved-away
            * vs. any incoming change, either by updating the
@@ -2825,6 +2825,34 @@ resolve_tree_conflict_on_node(svn_boolea
                                      svn_dirent_local_style(local_abspath,
                                                             scratch_pool));
         }
+      else if (reason == svn_wc_conflict_reason_moved_away
+               && action != svn_wc_conflict_action_edit)
+        {
+          /* action added is impossible, because that would imply that
+             something was added, but before that already moved...
+             (which would imply a replace) */
+          SVN_ERR_ASSERT(action == svn_wc_conflict_action_delete
+                         || action == svn_wc_conflict_action_replace);
+
+          if (conflict_choice == svn_wc_conflict_choose_merged)
+            {
+              /* Whatever was moved is removed at its original location by the
+                 update. That must also remove the recording of the move, so
+                 we don't have to do anything here. */
+
+              *did_resolve = TRUE;
+            }
+          else if (conflict_choice == svn_wc_conflict_choose_mine_conflict)
+            {
+              return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE,
+                                   NULL,
+                                   _("Tree conflict can only be "
+                                     "resolved to 'working' state; "
+                                     "'%s' is no longer moved"),
+                                   svn_dirent_local_style(local_abspath,
+                                                          scratch_pool));
+            }
+        }
     }
 
   if (! *did_resolve)


Reply via email to