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; } }