Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Aug 2018 14:06:28 +0000 (UTC)
From:      =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= <des@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r478451 - in head/devel/subversion: . files
Message-ID:  <201808301406.w7UE6S2b064289@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: des
Date: Thu Aug 30 14:06:28 2018
New Revision: 478451
URL: https://svnweb.freebsd.org/changeset/ports/478451

Log:
  Add patch from upstream commit r1839662, which fixes automatic conflict
  resolution for files removed from the merge target when the merge source
  and merge target have no proper common ancestor.  This is a depressingly
  common scenario in the FreeBSD base tree.
  
  Approved by:	maintainer (lev)
  Obtained from:	https://svn.apache.org/r1839662

Added:
  head/devel/subversion/files/patch-subversion-libsvn_client-conflicts.c   (contents, props changed)
Modified:
  head/devel/subversion/Makefile

Modified: head/devel/subversion/Makefile
==============================================================================
--- head/devel/subversion/Makefile	Thu Aug 30 13:39:51 2018	(r478450)
+++ head/devel/subversion/Makefile	Thu Aug 30 14:06:28 2018	(r478451)
@@ -1,7 +1,7 @@
 # Created by: rooneg@electricjellyfish.net
 # $FreeBSD$
 
-PORTREVISION=	0
+PORTREVISION=	1
 
 MAINTAINER=	lev@FreeBSD.org
 COMMENT=	Version control system

Added: head/devel/subversion/files/patch-subversion-libsvn_client-conflicts.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/subversion/files/patch-subversion-libsvn_client-conflicts.c	Thu Aug 30 14:06:28 2018	(r478451)
@@ -0,0 +1,94 @@
+--- subversion/libsvn_client/conflicts.c	2018/08/30 11:27:03	1839661
++++ subversion/libsvn_client/conflicts.c	2018/08/30 11:39:40	1839662
+@@ -1061,6 +1061,9 @@
+     {
+       apr_array_header_t *moves;
+ 
++      if (b->moves_table == NULL)
++        return SVN_NO_ERROR;
++
+       moves = apr_hash_get(b->moves_table, &log_entry->revision,
+                            sizeof(svn_revnum_t));
+       if (moves)
+@@ -2205,8 +2208,8 @@
+  * If the node was replaced rather than deleted, set *REPLACING_NODE_KIND to
+  * the node kind of the replacing node. Else, set it to svn_node_unknown.
+  * Only request the log for revisions up to END_REV from the server.
+- * If the deleted node was moved, provide heads of move chains in *MOVES.
+- * If the node was not moved,set *MOVES to NULL.
++ * If MOVES it not NULL, and the deleted node was moved, provide heads of
++ * move chains in *MOVES, or, if the node was not moved, set *MOVES to NULL.
+  */
+ static svn_error_t *
+ find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
+@@ -2243,10 +2246,11 @@
+                                              scratch_pool));
+   victim_abspath = svn_client_conflict_get_local_abspath(conflict);
+ 
+-  SVN_ERR(find_moves_in_revision_range(&moves_table, parent_repos_relpath,
+-                                       repos_root_url, repos_uuid,
+-                                       victim_abspath, start_rev, end_rev,
+-                                       ctx, result_pool, scratch_pool));
++  if (moves)
++    SVN_ERR(find_moves_in_revision_range(&moves_table, parent_repos_relpath,
++                                         repos_root_url, repos_uuid,
++                                         victim_abspath, start_rev, end_rev,
++                                         ctx, result_pool, scratch_pool));
+ 
+   url = svn_path_url_add_component2(repos_root_url, parent_repos_relpath,
+                                     scratch_pool);
+@@ -2271,7 +2275,8 @@
+   b.repos_root_url = repos_root_url;
+   b.repos_uuid = repos_uuid;
+   b.ctx = ctx;
+-  b.moves_table = moves_table;
++  if (moves)
++    b.moves_table = moves_table;
+   b.result_pool = result_pool;
+   SVN_ERR(svn_ra__dup_session(&b.extra_ra_session, ra_session, NULL,
+                               scratch_pool, scratch_pool));
+@@ -2301,7 +2306,7 @@
+     {
+       struct repos_move_info *move = b.move;
+ 
+-      if (move)
++      if (moves && move)
+         {
+           *deleted_rev = move->rev;
+           *deleted_rev_author = move->rev_author;
+@@ -2319,7 +2324,8 @@
+           *deleted_rev = SVN_INVALID_REVNUM;
+           *deleted_rev_author = NULL;
+           *replacing_node_kind = svn_node_unknown;
+-          *moves = NULL;
++          if (moves)
++            *moves = NULL;
+         }
+       return SVN_NO_ERROR;
+     }
+@@ -2328,10 +2334,11 @@
+       *deleted_rev = b.deleted_rev;
+       *deleted_rev_author = b.deleted_rev_author;
+       *replacing_node_kind = b.replacing_node_kind;
+-      SVN_ERR(find_operative_moves(moves, moves_table,
+-                                   b.deleted_repos_relpath, b.deleted_rev,
+-                                   ra_session, repos_root_url,
+-                                   result_pool, scratch_pool));
++      if (moves)
++        SVN_ERR(find_operative_moves(moves, moves_table,
++                                     b.deleted_repos_relpath, b.deleted_rev,
++                                     ra_session, repos_root_url,
++                                     result_pool, scratch_pool));
+     }
+ 
+   return SVN_NO_ERROR;
+@@ -2723,7 +2730,8 @@
+     end_rev = 0; /* ### We might walk through all of history... */
+ 
+   SVN_ERR(find_revision_for_suspected_deletion(
+-            &deleted_rev, &deleted_rev_author, &replacing_node_kind, &moves,
++            &deleted_rev, &deleted_rev_author, &replacing_node_kind,
++            yca_loc ? &moves : NULL,
+             conflict, deleted_basename, parent_repos_relpath,
+             parent_peg_rev, end_rev, related_repos_relpath, related_peg_rev,
+             ctx, conflict->pool, scratch_pool));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201808301406.w7UE6S2b064289>