You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2012/10/05 17:27:22 UTC

svn commit: r1394588 - in /subversion/trunk/subversion: libsvn_client/repos_diff.c tests/cmdline/merge_tree_conflict_tests.py

Author: cmpilato
Date: Fri Oct  5 15:27:21 2012
New Revision: 1394588

URL: http://svn.apache.org/viewvc?rev=1394588&view=rev
Log:
Fix issue #3802 ("redundant tree conflict notifications with serf when
merging replacement").

* subversion/libsvn_client/repos_diff.c
  (close_directory): Make the section of code which claims to "notify
    about any deleted paths within this directory that have not
    already been notified" actually only notify about deleted paths
    within the given directory ... instead of all
    not-yet-notified-about deleted paths anywhere in the editor drive
    tree.  (This sounds like a fault of the notification code, but is
    really just more fallout from ra_serf's violation of editor-v1
    drive ordering constraints.  As in the past, we sweep it under the
    rug and await editor-v2's promise of goodness.)

* subversion/tests/cmdline/merge_tree_conflict_tests.py
  (merge_replace_causes_tree_conflict): Remove @XFail() decorator.

Modified:
    subversion/trunk/subversion/libsvn_client/repos_diff.c
    subversion/trunk/subversion/tests/cmdline/merge_tree_conflict_tests.py

Modified: subversion/trunk/subversion/libsvn_client/repos_diff.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/repos_diff.c?rev=1394588&r1=1394587&r2=1394588&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/repos_diff.c (original)
+++ subversion/trunk/subversion/libsvn_client/repos_diff.c Fri Oct  5 15:27:21 2012
@@ -1151,6 +1151,13 @@ close_directory(void *dir_baton,
           const char *deleted_path = svn__apr_hash_index_key(hi);
           deleted_path_notify_t *dpn = svn__apr_hash_index_val(hi);
 
+          /* Ignore paths which are not children of b->path.  (There
+             should be none due to editor ordering constraints, but
+             ra_serf drops the ball here -- see issue #3802 for
+             details.) */
+          if (! svn_relpath_skip_ancestor(b->path, deleted_path))
+            continue;
+
           notify = svn_wc_create_notify(deleted_path, dpn->action, pool);
           notify->kind = dpn->kind;
           notify->content_state = notify->prop_state = dpn->state;

Modified: subversion/trunk/subversion/tests/cmdline/merge_tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1394588&r1=1394587&r2=1394588&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_tree_conflict_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tree_conflict_tests.py Fri Oct  5 15:27:21 2012
@@ -1671,7 +1671,6 @@ def merge_replace_setup(sbox):
 
 #----------------------------------------------------------------------
 # ra_serf causes duplicate notifications with this test:
-@XFail(svntest.main.is_ra_type_dav_serf)
 @Issue(3802)
 def merge_replace_causes_tree_conflict(sbox):
   "replace vs. edit tree-conflicts"