Author: philip
Date: Fri Apr 23 17:28:02 2010
New Revision: 937421

URL: http://svn.apache.org/viewvc?rev=937421&view=rev
Log:
* subversion/libsvn_client/copy.c (try_copy): Remove another svn_wc_entry_t.

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=937421&r1=937420&r2=937421&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/copy.c (original)
+++ subversion/trunk/subversion/libsvn_client/copy.c Fri Apr 23 17:28:02 2010
@@ -2037,33 +2037,37 @@ try_copy(svn_commit_info_t **commit_info
 
               for (i = 0; i < copy_pairs->nelts; i++)
                 {
-                  const char *url;
+                  const char *src_abspath, *copyfrom_url, *url;
+                  svn_revnum_t base_rev, copyfrom_rev;
                   svn_client__copy_pair_t *pair = APR_ARRAY_IDX(copy_pairs, i,
                                                     svn_client__copy_pair_t *);
 
-                  /* We can convert the working copy path to a URL based on the
-                     entries file. */
-                  const svn_wc_entry_t *entry;
-                  const char *src_abspath;
-
                   svn_pool_clear(iterpool);
 
                   SVN_ERR(svn_dirent_get_absolute(&src_abspath, pair->src,
                                                   iterpool));
-                  SVN_ERR(svn_wc__get_entry_versioned(&entry, ctx->wc_ctx,
-                                                      src_abspath,
-                                                      svn_node_unknown,
-                                                      FALSE, FALSE,
-                                                      iterpool, iterpool));
-
-                  url = (entry->copied ? entry->copyfrom_url : entry->url);
+                  SVN_ERR(svn_wc__node_get_copyfrom_info(&copyfrom_url,
+                                                         &copyfrom_rev,
+                                                         ctx->wc_ctx,
+                                                         src_abspath,
+                                                         pool, iterpool));
+                  if (copyfrom_url)
+                    url = copyfrom_url;
+                  else
+                    {
+                      SVN_ERR(svn_wc__node_get_url(&url, ctx->wc_ctx,
+                                                   src_abspath,
+                                                   pool, iterpool));
+                      SVN_ERR(svn_wc__node_get_base_rev(&base_rev, ctx->wc_ctx,
+                                                        src_abspath, 
iterpool));
+                    }
                   if (url == NULL)
                     return svn_error_createf
                       (SVN_ERR_ENTRY_MISSING_URL, NULL,
                        _("'%s' does not have a URL associated with it"),
                        svn_dirent_local_style(pair->src, pool));
 
-                  pair->src = apr_pstrdup(pool, url);
+                  pair->src = url;
 
                   if (!need_repos_peg_rev
                       || pair->src_peg_revision.kind == svn_opt_revision_base)
@@ -2071,7 +2075,7 @@ try_copy(svn_commit_info_t **commit_info
                       /* Default the peg revision to that of the WC entry. */
                       pair->src_peg_revision.kind = svn_opt_revision_number;
                       pair->src_peg_revision.value.number =
-                        (entry->copied ? entry->copyfrom_rev : 
entry->revision);
+                        (copyfrom_url ? copyfrom_rev : base_rev);
                     }
 
                   if (pair->src_op_revision.kind == svn_opt_revision_base)
@@ -2079,7 +2083,7 @@ try_copy(svn_commit_info_t **commit_info
                       /* Use the entry's revision as the operational rev. */
                       pair->src_op_revision.kind = svn_opt_revision_number;
                       pair->src_op_revision.value.number =
-                        (entry->copied ? entry->copyfrom_rev : 
entry->revision);
+                        (copyfrom_url ? copyfrom_rev : base_rev);
                     }
                 }
 


Reply via email to