You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/05/12 11:40:57 UTC

svn commit: r1337489 - /subversion/trunk/subversion/libsvn_client/commit_util.c

Author: rhuijben
Date: Sat May 12 09:40:57 2012
New Revision: 1337489

URL: http://svn.apache.org/viewvc?rev=1337489&view=rev
Log:
* subversion/libsvn_client/commit_util.c
  (harvest_status_callback): Make the mixed revision calculation easier to
    understand by using an else and existing variables.

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

Modified: subversion/trunk/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/commit_util.c?rev=1337489&r1=1337488&r2=1337489&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/commit_util.c (original)
+++ subversion/trunk/subversion/libsvn_client/commit_util.c Sat May 12 09:40:57 2012
@@ -796,10 +796,9 @@ harvest_status_callback(void *status_bat
         }
     }
 
-  /* Further additions occur in copy mode. */
-  if (copy_mode
-      && (!is_added || copy_mode_root)
-      && !(state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE))
+  /* Further copies may occur in copy mode. */
+  else if (copy_mode
+           && !(state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE))
     {
       svn_revnum_t dir_rev;
 
@@ -811,16 +810,21 @@ harvest_status_callback(void *status_bat
 
       if (copy_mode_root || node_rev != dir_rev)
         {
-          state_flags |= SVN_CLIENT_COMMIT_ITEM_ADD;
+          state_flags |= (SVN_CLIENT_COMMIT_ITEM_ADD
+                          | SVN_CLIENT_COMMIT_ITEM_IS_COPY);
 
-          SVN_ERR(svn_wc__node_get_origin(NULL, &cf_rev,
-                                      &cf_relpath, NULL,
-                                      NULL, NULL,
-                                      wc_ctx, local_abspath, FALSE,
-                                      scratch_pool, scratch_pool));
-
-          if (cf_relpath)
-            state_flags |= SVN_CLIENT_COMMIT_ITEM_IS_COPY;
+          if (status->copied)
+            {
+              /* Copy from original location */
+              cf_rev = original_rev;
+              cf_relpath = original_relpath;
+            }
+          else
+            {
+              /* Copy BASE location, to represent a mixed-rev or switch copy */
+              cf_rev = status->revision;
+              cf_relpath = status->repos_relpath;
+            }
         }
     }