Author: rhuijben
Date: Thu Feb 12 21:09:36 2015
New Revision: 1659400

URL: http://svn.apache.org/r1659400
Log:
Following up on r1659381, properly check for the difference between added
and obstructed (locally existing, but not added) nodes to avoid expectation
problems.

* subversion/libsvn_client/merge.c
  (merge_file_opened,
   merge_dir_opened): Check if the node is really added.

Modified:
    subversion/trunk/subversion/libsvn_client/merge.c

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1659400&r1=1659399&r2=1659400&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Thu Feb 12 21:09:36 2015
@@ -1849,12 +1849,14 @@ merge_file_opened(void **new_file_baton,
         }
       else if (fb->tree_conflict_local_node_kind != svn_node_file)
         {
+          svn_boolean_t added;
           fb->shadowed = TRUE;
 
-          fb->tree_conflict_reason =
-                  (fb->tree_conflict_local_node_kind != svn_node_none)
-                      ? svn_wc_conflict_reason_added
-                      : svn_wc_conflict_reason_obstructed;
+          SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx,
+                                        local_abspath, scratch_pool));
+
+          fb->tree_conflict_reason = added ? svn_wc_conflict_reason_added
+                                           : svn_wc_conflict_reason_obstructed;
 
           /* ### Similar to directory */
           *skip = TRUE;
@@ -1955,11 +1957,14 @@ merge_file_opened(void **new_file_baton,
                    && !is_deleted)
             {
               /* Set a tree conflict */
+              svn_boolean_t added;
+
               fb->shadowed = TRUE;
-              fb->tree_conflict_reason =
-                  (fb->tree_conflict_local_node_kind != svn_node_none)
-                      ? svn_wc_conflict_reason_added
-                      : svn_wc_conflict_reason_obstructed;
+              SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx,
+                                            local_abspath, scratch_pool));
+
+              fb->tree_conflict_reason = added ? svn_wc_conflict_reason_added
+                                               : 
svn_wc_conflict_reason_obstructed;
             }
         }
 
@@ -2627,12 +2632,14 @@ merge_dir_opened(void **new_dir_baton,
         }
       else if (db->tree_conflict_local_node_kind != svn_node_dir)
         {
+          svn_boolean_t added;
+
           db->shadowed = TRUE;
+          SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx,
+                                        local_abspath, scratch_pool));
 
-          db->tree_conflict_reason =
-            (db->tree_conflict_local_node_kind != svn_node_none)
-                      ? svn_wc_conflict_reason_added
-                      : svn_wc_conflict_reason_obstructed;
+          db->tree_conflict_reason = added ? svn_wc_conflict_reason_added
+                                           : svn_wc_conflict_reason_obstructed;
 
           /* ### To avoid breaking tests */
           *skip = TRUE;
@@ -2775,11 +2782,14 @@ merge_dir_opened(void **new_dir_baton,
                    && !is_deleted)
             {
               /* Set a tree conflict */
+              svn_boolean_t added;
               db->shadowed = TRUE;
-              db->tree_conflict_reason = 
-                  (db->tree_conflict_local_node_kind != svn_node_none)
-                      ? svn_wc_conflict_reason_added
-                      : svn_wc_conflict_reason_obstructed;
+
+              SVN_ERR(svn_wc__node_is_added(&added, merge_b->ctx->wc_ctx,
+                                            local_abspath, scratch_pool));
+
+              db->tree_conflict_reason = added ? svn_wc_conflict_reason_added
+                                               : 
svn_wc_conflict_reason_obstructed;
             }
         }
 


Reply via email to