You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/06/03 22:51:32 UTC
svn commit: r1345775 - in /subversion/trunk/subversion/libsvn_client:
client.h mergeinfo.c util.c
Author: rhuijben
Date: Sun Jun 3 20:51:32 2012
New Revision: 1345775
URL: http://svn.apache.org/viewvc?rev=1345775&view=rev
Log:
Fold svn_client__path_relative_to_root() in its three remaining callers.
* subversion/libsvn_client/client.h
(svn_client__path_relative_to_root): Remove function.
* subversion/libsvn_client/mergeinfo.c
(svn_client__get_wc_mergeinfo_catalog): Call svn_wc__node_get_repos_relpath.
(svn_client_mergeinfo_get_merged,
svn_client_mergeinfo_log): Call the right function to obtain the repos_relpath.
* subversion/libsvn_client/util.c
(svn_client__path_relative_to_root): Remove function.
Modified:
subversion/trunk/subversion/libsvn_client/client.h
subversion/trunk/subversion/libsvn_client/mergeinfo.c
subversion/trunk/subversion/libsvn_client/util.c
Modified: subversion/trunk/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=1345775&r1=1345774&r2=1345775&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Sun Jun 3 20:51:32 2012
@@ -276,31 +276,6 @@ svn_client__ensure_ra_session_url(const
const char *session_url,
apr_pool_t *pool);
-/* Return the path of ABSPATH_OR_URL relative to the repository root
- in REL_PATH (URI-decoded), allocated in RESULT_POOL.
- If INCLUDE_LEADING_SLASH is set, the returned result will have a leading
- slash; otherwise, it will not.
-
- REPOS_ROOT and RA_SESSION may be NULL if ABSPATH_OR_URL is a WC path,
- otherwise at least one of them must be non-null.
-
- CAUTION: While having a leading slash on a so-called relative path
- might work out well for functionality that interacts with
- mergeinfo, it results in a relative path that cannot be naively
- svn_path_join()'d with a repository root URL to provide a full URL.
-
- Use SCRATCH_POOL for temporary allocations.
-*/
-svn_error_t *
-svn_client__path_relative_to_root(const char **rel_path,
- svn_wc_context_t *wc_ctx,
- const char *abspath_or_url,
- const char *repos_root,
- svn_boolean_t include_leading_slash,
- svn_ra_session_t *ra_session,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
/* A default error handler for use with svn_wc_walk_entries3(). Returns
ERR in all cases. */
svn_error_t *
Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.c?rev=1345775&r1=1345774&r2=1345775&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/trunk/subversion/libsvn_client/mergeinfo.c Sun Jun 3 20:51:32 2012
@@ -373,7 +373,6 @@ svn_client__get_wc_mergeinfo_catalog(svn
const char *target_repos_rel_path;
svn_mergeinfo_t mergeinfo;
const char *repos_root;
- svn_node_kind_t kind;
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
*mergeinfo_cat = NULL;
@@ -389,12 +388,9 @@ svn_client__get_wc_mergeinfo_catalog(svn
return SVN_NO_ERROR;
}
- SVN_ERR(svn_client__path_relative_to_root(&target_repos_rel_path,
- ctx->wc_ctx,
- local_abspath,
- NULL, FALSE,
- NULL, scratch_pool,
- scratch_pool));
+ SVN_ERR(svn_wc__node_get_repos_relpath(&target_repos_rel_path,
+ ctx->wc_ctx, local_abspath,
+ scratch_pool, scratch_pool));
/* Get the mergeinfo for the LOCAL_ABSPATH target and set *INHERITED and
*WALKED_PATH. */
@@ -1595,17 +1591,23 @@ svn_client_mergeinfo_get_merged(apr_hash
peg_revision, FALSE, FALSE, ctx, pool, pool));
if (mergeinfo_cat)
{
- const char *path_or_url_repos_rel;
+ const char *repos_relpath;
- if (! svn_path_is_url(path_or_url)
- && ! svn_dirent_is_absolute(path_or_url))
- SVN_ERR(svn_dirent_get_absolute(&path_or_url, path_or_url, pool));
-
- SVN_ERR(svn_client__path_relative_to_root(&path_or_url_repos_rel,
- ctx->wc_ctx, path_or_url,
- repos_root, FALSE, NULL,
- pool, pool));
- mergeinfo = apr_hash_get(mergeinfo_cat, path_or_url_repos_rel,
+ if (! svn_path_is_url(path_or_url))
+ {
+ SVN_ERR(svn_dirent_get_absolute(&path_or_url, path_or_url, pool));
+ SVN_ERR(svn_wc__node_get_repos_relpath(&repos_relpath,
+ ctx->wc_ctx, path_or_url,
+ pool, pool));
+ }
+ else
+ {
+ repos_relpath = svn_uri_skip_ancestor(repos_root, path_or_url, pool);
+
+ SVN_ERR_ASSERT(repos_relpath != NULL); /* Or get_mergeinfo failed */
+ }
+
+ mergeinfo = apr_hash_get(mergeinfo_cat, repos_relpath,
APR_HASH_KEY_STRING);
}
else
@@ -1672,15 +1674,19 @@ svn_client_mergeinfo_log(svn_boolean_t f
ctx, scratch_pool, scratch_pool));
if (!svn_path_is_url(target_path_or_url))
- SVN_ERR(svn_dirent_get_absolute(&target_path_or_url, target_path_or_url, scratch_pool));
+ {
+ SVN_ERR(svn_dirent_get_absolute(&target_path_or_url, target_path_or_url, scratch_pool));
+ SVN_ERR(svn_wc__node_get_repos_relpath(&target_repos_rel,
+ ctx->wc_ctx, target_path_or_url,
+ scratch_pool, scratch_pool));
+ }
+ else
+ {
+ target_repos_rel = svn_uri_skip_ancestor(repos_root, target_path_or_url,
+ scratch_pool);
- SVN_ERR(svn_client__path_relative_to_root(&target_repos_rel,
- ctx->wc_ctx,
- target_path_or_url,
- repos_root,
- FALSE /* leading_slash */, NULL,
- scratch_pool,
- scratch_pool));
+ SVN_ERR_ASSERT(target_repos_rel != NULL); /* Or get_mergeinfo should have failed */
+ }
if (!target_mergeinfo_cat)
{
Modified: subversion/trunk/subversion/libsvn_client/util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/util.c?rev=1345775&r1=1345774&r2=1345775&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/util.c (original)
+++ subversion/trunk/subversion/libsvn_client/util.c Sun Jun 3 20:51:32 2012
@@ -169,69 +169,6 @@ svn_client_commit_item3_dup(const svn_cl
}
svn_error_t *
-svn_client__path_relative_to_root(const char **rel_path,
- svn_wc_context_t *wc_ctx,
- const char *abspath_or_url,
- const char *repos_root,
- svn_boolean_t include_leading_slash,
- svn_ra_session_t *ra_session,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- const char *repos_relpath;
-
- /* If we have a WC path... */
- if (! svn_path_is_url(abspath_or_url))
- {
- /* ... query it directly. */
- SVN_ERR(svn_wc__node_get_repos_relpath(&repos_relpath,
- wc_ctx,
- abspath_or_url,
- result_pool,
- scratch_pool));
-
- SVN_ERR_ASSERT(repos_relpath != NULL);
- }
- else if (repos_root != NULL)
- {
- repos_relpath = svn_uri_skip_ancestor(repos_root, abspath_or_url,
- result_pool);
- if (!repos_relpath)
- return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, NULL,
- _("URL '%s' is not a child of repository "
- "root URL '%s'"),
- abspath_or_url, repos_root);
- }
- else
- {
- svn_error_t *err;
-
- SVN_ERR_ASSERT(ra_session != NULL);
-
- /* Ask the RA layer to create a relative path for us */
- err = svn_ra_get_path_relative_to_root(ra_session, &repos_relpath,
- abspath_or_url, scratch_pool);
-
- if (err)
- {
- if (err->apr_err == SVN_ERR_RA_ILLEGAL_URL)
- return svn_error_createf(SVN_ERR_CLIENT_UNRELATED_RESOURCES, err,
- _("URL '%s' is not inside repository"),
- abspath_or_url);
-
- return svn_error_trace(err);
- }
- }
-
- if (include_leading_slash)
- *rel_path = apr_pstrcat(result_pool, "/", repos_relpath, NULL);
- else
- *rel_path = repos_relpath;
-
- return SVN_NO_ERROR;
-}
-
-svn_error_t *
svn_client__wc_node_get_base(svn_client__pathrev_t **base_p,
const char *wc_abspath,
svn_client_ctx_t *ctx,