Author: stsp
Date: Fri Aug 18 13:17:55 2017
New Revision: 1805422

URL: http://svn.apache.org/viewvc?rev=1805422&view=rev
Log:
Fix issue 4688, "New conflict resolver bug in tracing history".

* subversion/libsvn_client/conflicts.c
  (conflict_tree_get_details_local_missing): Start scanning the parent's
   history from its checked out peg-revision, where it is guaranteed to exist.
   The previous code was using the old/new revisions recorded in conflict
   data as peg revisions for the parent path. But these revisions do not
   necessarily relate to the conflict victim's parent path, they relate
   to the merge operation which was attempted on the victim.

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=1805422&r1=1805421&r2=1805422&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_client/conflicts.c Fri Aug 18 13:17:55 
2017
@@ -2072,6 +2072,7 @@ conflict_tree_get_details_local_missing(
   const char *old_repos_relpath;
   const char *new_repos_relpath;
   const char *parent_repos_relpath;
+  svn_revnum_t parent_peg_rev;
   svn_revnum_t old_rev;
   svn_revnum_t new_rev;
   svn_revnum_t deleted_rev;
@@ -2094,7 +2095,7 @@ conflict_tree_get_details_local_missing(
    * deleted the node. */
   deleted_basename = svn_dirent_basename(conflict->local_abspath,
                                          scratch_pool);
-  SVN_ERR(svn_wc__node_get_repos_info(NULL, &parent_repos_relpath,
+  SVN_ERR(svn_wc__node_get_repos_info(&parent_peg_rev, &parent_repos_relpath,
                                       NULL, NULL,
                                       ctx->wc_ctx,
                                       svn_dirent_dirname(
@@ -2122,8 +2123,7 @@ conflict_tree_get_details_local_missing(
   SVN_ERR(find_revision_for_suspected_deletion(
             &deleted_rev, &deleted_rev_author, &replacing_node_kind, &moves,
             conflict, deleted_basename, parent_repos_relpath,
-            old_rev < new_rev ? new_rev : old_rev, 0,
-            related_repos_relpath, related_peg_rev,
+            parent_peg_rev, 0, related_repos_relpath, related_peg_rev,
             ctx, conflict->pool, scratch_pool));
 
   if (deleted_rev == SVN_INVALID_REVNUM)


Reply via email to