Author: hwright
Date: Thu Apr  5 17:11:23 2012
New Revision: 1309951

URL: http://svn.apache.org/viewvc?rev=1309951&view=rev
Log:
Ev2 shims: When doing a wc->repos copy, calculate the proper common wc path
for use in the shim callbacks.

Current number of failing Ev2 DAV tests: 1

* subversion/libsvn_client/copy.c
  (wc_to_repos_copy): Calculate and use the common wc abspath.

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

Modified: subversion/trunk/subversion/libsvn_client/copy.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/copy.c?rev=1309951&r1=1309950&r2=1309951&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/copy.c (original)
+++ subversion/trunk/subversion/libsvn_client/copy.c Thu Apr  5 17:11:23 2012
@@ -1182,6 +1182,7 @@ wc_to_repos_copy(const apr_array_header_
   const char *top_src_abspath;
   svn_ra_session_t *ra_session;
   const svn_delta_editor_t *editor;
+  const char *common_wc_abspath = NULL;
   void *edit_baton;
   svn_client__committables_t *committables;
   apr_array_header_t *commit_items;
@@ -1406,6 +1407,19 @@ wc_to_repos_copy(const apr_array_header_
   SVN_ERR(svn_client__condense_commit_items(&top_dst_url,
                                             commit_items, pool));
 
+#if ENABLE_EV2_SHIMS
+  common_wc_abspath = APR_ARRAY_IDX(commit_items, 0,
+                                    svn_client_commit_item3_t *)->path;
+  for (i = 1; i < commit_items->nelts; i++)
+    {
+      svn_client_commit_item3_t *item =
+        APR_ARRAY_IDX(commit_items, i, svn_client_commit_item3_t *);
+
+      common_wc_abspath = svn_dirent_get_longest_ancestor(common_wc_abspath,
+                                                          item->path, pool);
+    }
+#endif
+
   /* Open an RA session to DST_URL. */
   SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, top_dst_url,
                                                NULL, commit_items,
@@ -1414,7 +1428,8 @@ wc_to_repos_copy(const apr_array_header_
   /* Fetch RA commit editor. */
   SVN_ERR(svn_ra__register_editor_shim_callbacks(ra_session,
                         svn_client__get_shim_callbacks(ctx->wc_ctx,
-                                                       NULL, pool)));
+                                                       common_wc_abspath,
+                                                       pool)));
   SVN_ERR(svn_ra_get_commit_editor3(ra_session, &editor, &edit_baton,
                                     commit_revprops,
                                     commit_callback,


Reply via email to