Author: stsp
Date: Fri Sep 16 14:39:33 2016
New Revision: 1761041

URL: http://svn.apache.org/viewvc?rev=1761041&view=rev
Log:
* subversion/libsvn_client/conflicts.c
  (find_deleted_rev): Ignore FS_NOT_FOUND errors when searching for a YCA of
   the deleted path and the related path. The related path and revision are
   bogus for moves committed within other moves/copies. We now treat such
   moves like we do incoming deletions, instead of erroring out.
   More work to actually support moves within copies is definitely needed...

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

Modified: subversion/trunk/subversion/libsvn_client/conflicts.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/conflicts.c?rev=1761041&r1=1761040&r2=1761041&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_client/conflicts.c Fri Sep 16 14:39:33 
2016
@@ -678,19 +678,28 @@ find_deleted_rev(void *baton,
           if (b->related_repos_relpath != NULL &&
               b->related_repos_peg_rev != SVN_INVALID_REVNUM)
             {
-              svn_client__pathrev_t *yca_loc;
+              svn_client__pathrev_t *yca_loc = NULL;
+              svn_error_t *err;
 
               /* We found a deleted node which occupies the correct path.
                * To be certain that this is the deleted node we're looking for,
                * we must establish whether it is ancestrally related to the
                * "related node" specified in our baton. */
-              SVN_ERR(find_yca(&yca_loc,
-                               b->related_repos_relpath,
-                               b->related_repos_peg_rev,
-                               b->deleted_repos_relpath,
-                               log_entry->revision - 1,
-                               b->repos_root_url, b->repos_uuid,
-                               b->ctx, iterpool, iterpool));
+              err = find_yca(&yca_loc,
+                             b->related_repos_relpath,
+                             b->related_repos_peg_rev,
+                             b->deleted_repos_relpath,
+                             log_entry->revision - 1,
+                             b->repos_root_url, b->repos_uuid,
+                             b->ctx, iterpool, iterpool);
+              if (err)
+                {
+                  /* ### Happens for moves within other moves and copies. */
+                  if (err->apr_err == SVN_ERR_FS_NOT_FOUND)
+                    svn_error_clear(err);
+                  else
+                    return svn_error_trace(err);
+                }
               deleted_node_found = (yca_loc != NULL);
             }
 


Reply via email to