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,