You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2017/08/18 13:29:49 UTC

svn commit: r1805425 - /subversion/trunk/subversion/libsvn_client/conflicts.c

Author: stsp
Date: Fri Aug 18 13:29:49 2017
New Revision: 1805425

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

* subversion/libsvn_client/conflicts.c
  (conflict_tree_get_details_incoming_delete): Start scanning the parent's
   history from its checked out peg-revision, where it is guaranteed to exist.
   The previous code was using new revision recorded in conflict data as peg
   revisions for the parent path. But this revision does not necessarily relate
   to the conflict victim's parent path, it relates to the update 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=1805425&r1=1805424&r2=1805425&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_client/conflicts.c Fri Aug 18 13:29:49 2017
@@ -4158,6 +4158,7 @@ conflict_tree_get_details_incoming_delet
       if (old_rev < new_rev)
         {
           const char *parent_repos_relpath;
+          svn_revnum_t parent_peg_rev;
           svn_revnum_t deleted_rev;
           const char *deleted_rev_author;
           svn_node_kind_t replacing_node_kind;
@@ -4166,7 +4167,8 @@ conflict_tree_get_details_incoming_delet
           svn_revnum_t related_peg_rev;
 
           /* The update operation went forward in history. */
-          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(
@@ -4194,8 +4196,8 @@ conflict_tree_get_details_incoming_delet
                     &deleted_rev, &deleted_rev_author, &replacing_node_kind,
                     &moves, conflict,
                     svn_dirent_basename(conflict->local_abspath, scratch_pool),
-                    parent_repos_relpath,
-                    new_rev, new_kind == svn_node_none ? 0 : old_rev,
+                    parent_repos_relpath, parent_peg_rev,
+                    new_kind == svn_node_none ? 0 : old_rev,
                     related_repos_relpath, related_peg_rev,
                     ctx, conflict->pool, scratch_pool));
           if (deleted_rev == SVN_INVALID_REVNUM)