Author: hwright
Date: Mon Apr  9 23:31:15 2012
New Revision: 1311519

URL: http://svn.apache.org/viewvc?rev=1311519&view=rev
Log:
Fix a few of the Ev2 shim test failures introduced last week by tracking the
repos relpath when relevant.  We only actually provide a value for one instance
of the shims in this commit, but it cuts down the number of failures to 48.

* subversion/libsvn_ra_svn/editorp.c,
  subversion/libsvn_repos/commit.c,
  subversion/libsvn_repos/dump.c,
  subversion/libsvn_wc/status.c,
  subversion/libsvn_wc/diff_editor.c,
  subversion/libsvn_wc/update_editor.c,
  subversion/libsvn_client/export.c,
  subversion/libsvn_client/repos_diff.c,
  subversion/libsvn_ra_neon/commit.c,
  subversion/svnrdump/dump_editor.c,
  subversion/libsvn_ra_serf/commit.c:
    Update various shim constructors.

* subversion/include/svn_delta.h
  (svn_editor__insert_shims): Add repos_root param.

* subversion/libsvn_delta/compat.c
  (editor_baton, ev2_edit_baton): Add repos_root value.
  (map_to_repos_relpath): Use the repos_root to construct a repos_relpath.
  (delta_from_editor, editor_from_delta): Take a repos_root, and use stash it
    in the baton.
  (build): Use the repos_root to construct a proper URL.
  (svn_editor__insert_shims): Take a repos_root, and pass it down the stack.

Modified:
    subversion/trunk/subversion/include/svn_delta.h
    subversion/trunk/subversion/libsvn_client/export.c
    subversion/trunk/subversion/libsvn_client/repos_diff.c
    subversion/trunk/subversion/libsvn_delta/compat.c
    subversion/trunk/subversion/libsvn_ra_neon/commit.c
    subversion/trunk/subversion/libsvn_ra_serf/commit.c
    subversion/trunk/subversion/libsvn_ra_svn/editorp.c
    subversion/trunk/subversion/libsvn_repos/commit.c
    subversion/trunk/subversion/libsvn_repos/dump.c
    subversion/trunk/subversion/libsvn_wc/diff_editor.c
    subversion/trunk/subversion/libsvn_wc/status.c
    subversion/trunk/subversion/libsvn_wc/update_editor.c
    subversion/trunk/subversion/svnrdump/dump_editor.c

Modified: subversion/trunk/subversion/include/svn_delta.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_delta.h?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_delta.h (original)
+++ subversion/trunk/subversion/include/svn_delta.h Mon Apr  9 23:31:15 2012
@@ -1170,6 +1170,7 @@ svn_editor__insert_shims(const svn_delta
                          void **dedit_baton_out,
                          const svn_delta_editor_t *deditor_in,
                          void *dedit_baton_in,
+                         const char *repos_root,
                          svn_delta_shim_callbacks_t *shim_callbacks,
                          apr_pool_t *result_pool,
                          apr_pool_t *scratch_pool);

Modified: subversion/trunk/subversion/libsvn_client/export.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/export.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/export.c (original)
+++ subversion/trunk/subversion/libsvn_client/export.c Mon Apr  9 23:31:15 2012
@@ -1236,7 +1236,7 @@ svn_client_export5(svn_revnum_t *result_
 
           SVN_ERR(svn_editor__insert_shims(&export_editor, &edit_baton,
                                            export_editor, edit_baton,
-                                           shim_callbacks, pool, pool));
+                                           NULL, shim_callbacks, pool, pool));
 
           /* Manufacture a basic 'report' to the update reporter. */
           SVN_ERR(svn_ra_do_update2(ra_session,

Modified: subversion/trunk/subversion/libsvn_client/repos_diff.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/repos_diff.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/repos_diff.c (original)
+++ subversion/trunk/subversion/libsvn_client/repos_diff.c Mon Apr  9 23:31:15 
2012
@@ -1464,7 +1464,7 @@ svn_client__get_diff_editor(const svn_de
   shim_callbacks->fetch_baton = eb;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks,
+                                   NULL, shim_callbacks,
                                    result_pool, result_pool));
 
   return SVN_NO_ERROR;

Modified: subversion/trunk/subversion/libsvn_delta/compat.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/compat.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_delta/compat.c (original)
+++ subversion/trunk/subversion/libsvn_delta/compat.c Mon Apr  9 23:31:15 2012
@@ -138,6 +138,9 @@ struct ev2_edit_baton
   apr_array_header_t *path_order;
   int paths_processed;
 
+  /* For calculating relpaths from Ev1 copyfrom urls. */
+  const char *repos_root;
+
   apr_pool_t *edit_pool;
   struct extra_baton *exb;
   svn_boolean_t closed;
@@ -624,9 +627,7 @@ map_to_repos_relpath(struct ev2_edit_bat
   SVN_DBG(("repos_path='%s'\n", path_or_url));
 #endif
 
-  /* ### do something here  */
-
-  return path_or_url;
+  return svn_uri_skip_ancestor(eb->repos_root, path_or_url, result_pool);
 }
 
 
@@ -1090,6 +1091,7 @@ delta_from_editor(const svn_delta_editor
                   unlock_func_t unlock_func,
                   void *unlock_baton,
                   svn_boolean_t *found_abs_paths,
+                  const char *repos_root,
                   svn_delta_fetch_props_func_t fetch_props_func,
                   void *fetch_props_baton,
                   svn_delta_fetch_base_func_t fetch_base_func,
@@ -1126,6 +1128,7 @@ delta_from_editor(const svn_delta_editor
   eb->found_abs_paths = found_abs_paths;
   *eb->found_abs_paths = FALSE;
   eb->exb = exb;
+  eb->repos_root = apr_pstrdup(pool, repos_root);
 
   eb->fetch_props_func = fetch_props_func;
   eb->fetch_props_baton = fetch_props_baton;
@@ -1184,6 +1187,7 @@ struct editor_baton
 
   struct operation root;
   svn_boolean_t *make_abs_paths;
+  const char *repos_root;
 
   apr_hash_t *paths;
   apr_pool_t *edit_pool;
@@ -1343,8 +1347,11 @@ build(struct editor_baton *eb,
                                     url, rev, scratch_pool));
       else
         operation->kind = kind;
-      operation->copyfrom_url = url;
+
       operation->copyfrom_revision = rev;
+      operation->copyfrom_url = svn_path_url_add_component2(eb->repos_root,
+                                                            url,
+                                                            eb->edit_pool);
     }
   /* Handle mkdir operations (which can be adds or replacements). */
   else if (action == ACTION_MKDIR)
@@ -1991,6 +1998,7 @@ editor_from_delta(svn_editor_t **editor_
                   const svn_delta_editor_t *deditor,
                   void *dedit_baton,
                   svn_boolean_t *send_abs_paths,
+                  const char *repos_root,
                   svn_cancel_func_t cancel_func,
                   void *cancel_baton,
                   svn_delta_fetch_kind_func_t fetch_kind_func,
@@ -2024,6 +2032,7 @@ editor_from_delta(svn_editor_t **editor_
   eb->dedit_baton = dedit_baton;
   eb->edit_pool = result_pool;
   eb->paths = apr_hash_make(result_pool);
+  eb->repos_root = apr_pstrdup(result_pool, repos_root);
 
   eb->fetch_kind_func = fetch_kind_func;
   eb->fetch_kind_baton = fetch_kind_baton;
@@ -2075,6 +2084,7 @@ svn_editor__insert_shims(const svn_delta
                          void **dedit_baton_out,
                          const svn_delta_editor_t *deditor_in,
                          void *dedit_baton_in,
+                         const char *repos_root,
                          svn_delta_shim_callbacks_t *shim_callbacks,
                          apr_pool_t *result_pool,
                          apr_pool_t *scratch_pool)
@@ -2110,7 +2120,8 @@ svn_editor__insert_shims(const svn_delta
 
   SVN_ERR(editor_from_delta(&editor, &exb, &unlock_func, &unlock_baton,
                             deditor_in, dedit_baton_in,
-                            found_abs_paths, NULL, NULL,
+                            found_abs_paths, repos_root,
+                            NULL, NULL,
                             shim_callbacks->fetch_kind_func,
                             shim_callbacks->fetch_baton,
                             shim_callbacks->fetch_props_func,
@@ -2119,6 +2130,7 @@ svn_editor__insert_shims(const svn_delta
   SVN_ERR(delta_from_editor(deditor_out, dedit_baton_out, editor,
                             unlock_func, unlock_baton,
                             found_abs_paths,
+                            repos_root,
                             shim_callbacks->fetch_props_func,
                             shim_callbacks->fetch_baton,
                             shim_callbacks->fetch_base_func,

Modified: subversion/trunk/subversion/libsvn_ra_neon/commit.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/commit.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_neon/commit.c (original)
+++ subversion/trunk/subversion/libsvn_ra_neon/commit.c Mon Apr  9 23:31:15 2012
@@ -1620,7 +1620,7 @@ svn_error_t * svn_ra_neon__get_commit_ed
   *edit_baton = cc;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   ras->shim_callbacks, pool, pool));
+                                   NULL, ras->shim_callbacks, pool, pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_ra_serf/commit.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/commit.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/commit.c Mon Apr  9 23:31:15 2012
@@ -2369,7 +2369,7 @@ svn_ra_serf__get_commit_editor(svn_ra_se
   *edit_baton = ctx;
 
   SVN_ERR(svn_editor__insert_shims(ret_editor, edit_baton, *ret_editor,
-                                   *edit_baton, session->shim_callbacks,
+                                   *edit_baton, NULL, session->shim_callbacks,
                                    pool, pool));
 
   return SVN_NO_ERROR;

Modified: subversion/trunk/subversion/libsvn_ra_svn/editorp.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_svn/editorp.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_svn/editorp.c (original)
+++ subversion/trunk/subversion/libsvn_ra_svn/editorp.c Mon Apr  9 23:31:15 2012
@@ -437,7 +437,8 @@ void svn_ra_svn_get_editor(const svn_del
   *edit_baton = eb;
 
   svn_error_clear(svn_editor__insert_shims(editor, edit_baton, *editor,
-                                           *edit_baton, conn->shim_callbacks,
+                                           *edit_baton, NULL,
+                                           conn->shim_callbacks,
                                            pool, pool));
 }
 

Modified: subversion/trunk/subversion/libsvn_repos/commit.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/commit.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_repos/commit.c (original)
+++ subversion/trunk/subversion/libsvn_repos/commit.c Mon Apr  9 23:31:15 2012
@@ -981,7 +981,7 @@ svn_repos_get_commit_editor5(const svn_d
   shim_callbacks->fetch_baton = eb;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks, pool, pool));
+                                   eb->repos_url, shim_callbacks, pool, pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_repos/dump.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/dump.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_repos/dump.c (original)
+++ subversion/trunk/subversion/libsvn_repos/dump.c Mon Apr  9 23:31:15 2012
@@ -1009,7 +1009,7 @@ get_dump_editor(const svn_delta_editor_t
   shim_callbacks->fetch_baton = eb;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks, pool, pool));
+                                   NULL, shim_callbacks, pool, pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_wc/diff_editor.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/diff_editor.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/diff_editor.c (original)
+++ subversion/trunk/subversion/libsvn_wc/diff_editor.c Mon Apr  9 23:31:15 2012
@@ -1946,7 +1946,8 @@ svn_wc__get_diff_editor(const svn_delta_
 
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks, result_pool, scratch_pool));
+                                   NULL, shim_callbacks,
+                                   result_pool, scratch_pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_wc/status.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/status.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/status.c (original)
+++ subversion/trunk/subversion/libsvn_wc/status.c Mon Apr  9 23:31:15 2012
@@ -2588,7 +2588,7 @@ svn_wc__get_status_editor(const svn_delt
   shim_callbacks->fetch_baton = sfb;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks,
+                                   NULL, shim_callbacks,
                                    result_pool, scratch_pool));
 
   return SVN_NO_ERROR;

Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/update_editor.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/trunk/subversion/libsvn_wc/update_editor.c Mon Apr  9 23:31:15 
2012
@@ -4996,7 +4996,8 @@ make_editor(svn_revnum_t *target_revisio
   shim_callbacks->fetch_baton = sfb;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks, result_pool, scratch_pool));
+                                   NULL, shim_callbacks,
+                                   result_pool, scratch_pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/svnrdump/dump_editor.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/dump_editor.c?rev=1311519&r1=1311518&r2=1311519&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/dump_editor.c (original)
+++ subversion/trunk/subversion/svnrdump/dump_editor.c Mon Apr  9 23:31:15 2012
@@ -1063,7 +1063,7 @@ svn_rdump__get_dump_editor(const svn_del
   shim_callbacks->fetch_baton = eb;
 
   SVN_ERR(svn_editor__insert_shims(editor, edit_baton, *editor, *edit_baton,
-                                   shim_callbacks, pool, pool));
+                                   NULL, shim_callbacks, pool, pool));
 
   return SVN_NO_ERROR;
 }


Reply via email to