You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by sv...@apache.org on 2013/05/27 06:01:40 UTC

svn commit: r1486507 - in /subversion/branches/1.8.x: ./ STATUS subversion/libsvn_repos/replay.c

Author: svn-role
Date: Mon May 27 04:01:39 2013
New Revision: 1486507

URL: http://svn.apache.org/r1486507
Log:
Merge r1482436 from trunk:

 * r1482436
   Resolve regression in svn_ra_replay_range() where it didn't apply
   the send_changes FALSE flag to property changes.
   Justification:
     The replay without changes mode is used by repository viewers
     to obtain more information about changes. We should keep this
     behavior stable
   Votes:
     +1: rhuijben (for either 1.8.0 or later)
     +1: cmpilato, danielsh

Modified:
    subversion/branches/1.8.x/   (props changed)
    subversion/branches/1.8.x/STATUS
    subversion/branches/1.8.x/subversion/libsvn_repos/replay.c

Propchange: subversion/branches/1.8.x/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1482436

Modified: subversion/branches/1.8.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/STATUS?rev=1486507&r1=1486506&r2=1486507&view=diff
==============================================================================
--- subversion/branches/1.8.x/STATUS (original)
+++ subversion/branches/1.8.x/STATUS Mon May 27 04:01:39 2013
@@ -105,17 +105,6 @@ Approved changes:
 # blocking issues.  If in doubt see this link for details:
 # http://subversion.apache.org/docs/community-guide/releasing.html#release-stabilization
 
- * r1482436
-   Resolve regression in svn_ra_replay_range() where it didn't apply
-   the send_changes FALSE flag to property changes.
-   Justification:
-     The replay without changes mode is used by repository viewers
-     to obtain more information about changes. We should keep this
-     behavior stable
-   Votes:
-     +1: rhuijben (for either 1.8.0 or later)
-     +1: cmpilato, danielsh
-
  * r1480149
    Fix a build problem on OS X 10.5.
    Justification:

Modified: subversion/branches/1.8.x/subversion/libsvn_repos/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x/subversion/libsvn_repos/replay.c?rev=1486507&r1=1486506&r2=1486507&view=diff
==============================================================================
--- subversion/branches/1.8.x/subversion/libsvn_repos/replay.c (original)
+++ subversion/branches/1.8.x/subversion/libsvn_repos/replay.c Mon May 27 04:01:39 2013
@@ -704,31 +704,45 @@ path_driver_cb_func(void **dir_baton,
       /* Handle property modifications. */
       if (change->prop_mod || downgraded_copy)
         {
-          apr_array_header_t *prop_diffs;
-          apr_hash_t *old_props;
-          apr_hash_t *new_props;
-          int i;
-
-          if (source_root)
-            SVN_ERR(svn_fs_node_proplist(&old_props, source_root,
-                                         source_fspath, pool));
-          else
-            old_props = apr_hash_make(pool);
+          if (cb->compare_root)
+            {
+              apr_array_header_t *prop_diffs;
+              apr_hash_t *old_props;
+              apr_hash_t *new_props;
+              int i;
+
+              if (source_root)
+                SVN_ERR(svn_fs_node_proplist(&old_props, source_root,
+                                             source_fspath, pool));
+              else
+                old_props = apr_hash_make(pool);
 
-          SVN_ERR(svn_fs_node_proplist(&new_props, root, edit_path, pool));
+              SVN_ERR(svn_fs_node_proplist(&new_props, root, edit_path, pool));
 
-          SVN_ERR(svn_prop_diffs(&prop_diffs, new_props, old_props,
-                                 pool));
+              SVN_ERR(svn_prop_diffs(&prop_diffs, new_props, old_props,
+                                     pool));
 
-          for (i = 0; i < prop_diffs->nelts; ++i)
+              for (i = 0; i < prop_diffs->nelts; ++i)
+                {
+                  svn_prop_t *pc = &APR_ARRAY_IDX(prop_diffs, i, svn_prop_t);
+                   if (change->node_kind == svn_node_dir)
+                     SVN_ERR(editor->change_dir_prop(*dir_baton, pc->name,
+                                                     pc->value, pool));
+                   else if (change->node_kind == svn_node_file)
+                     SVN_ERR(editor->change_file_prop(file_baton, pc->name,
+                                                      pc->value, pool));
+                }
+            }
+          else
             {
-              svn_prop_t *pc = &APR_ARRAY_IDX(prop_diffs, i, svn_prop_t);
-               if (change->node_kind == svn_node_dir)
-                 SVN_ERR(editor->change_dir_prop(*dir_baton, pc->name,
-                                                 pc->value, pool));
-               else if (change->node_kind == svn_node_file)
-                 SVN_ERR(editor->change_file_prop(file_baton, pc->name,
-                                                  pc->value, pool));
+              /* Just do a dummy prop change to signal that there are *any*
+                 propmods. */
+              if (change->node_kind == svn_node_dir)
+                SVN_ERR(editor->change_dir_prop(*dir_baton, "", NULL,
+                                                pool));
+              else if (change->node_kind == svn_node_file)
+                SVN_ERR(editor->change_file_prop(file_baton, "", NULL,
+                                                 pool));
             }
         }