On Thu, Nov 18, 2010 at 06:34:30AM +0200, Daniel Shahaf wrote: > Daniel Shahaf wrote on Thu, Nov 18, 2010 at 06:07:07 +0200: > > + SVN_ERR(svn_fs_node_history(&history, copyto_root, copyto_path, pool)); > > + SVN_ERR(svn_fs_history_prev(&history_prev, history, TRUE /* cross copies > > */, > > + pool)); > > + SVN_ERR(svn_fs_history_location(copyfrom_path_p, copyfrom_rev_p, > > + history_prev, pool)); > > Tests running (trunk plus the patch). > > > But perhaps I should have used this function instead: > > 1439 svn_error_t * > 1440 svn_fs_copied_from(svn_revnum_t *rev_p, > 1441 const char **path_p, > 1442 svn_fs_root_t *root, > 1443 const char *path, > 1444 apr_pool_t *pool);
You mean like this? Seems to work here. Index: subversion/libsvn_repos/replay.c =================================================================== --- subversion/libsvn_repos/replay.c (revision 1036389) +++ subversion/libsvn_repos/replay.c (working copy) @@ -225,10 +225,14 @@ add_subdir(svn_fs_root_t *source_root, continue; else if (change->change_kind == svn_fs_path_change_replace) { - /* ### Can this assert fail? */ - SVN_ERR_ASSERT(change->copyfrom_known); - copyfrom_path = change->copyfrom_path; - copyfrom_rev = change->copyfrom_rev; + if (change->copyfrom_known) + { + copyfrom_path = change->copyfrom_path; + copyfrom_rev = change->copyfrom_rev; + } + else + SVN_ERR(svn_fs_copied_from(©from_rev, ©from_path, + target_root, new_path, pool)); } }