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 2013/01/17 17:04:46 UTC
svn commit: r1434750 - in /subversion/trunk/subversion/libsvn_client:
client.h externals.c status.c
Author: rhuijben
Date: Thu Jan 17 16:04:45 2013
New Revision: 1434750
URL: http://svn.apache.org/viewvc?rev=1434750&view=rev
Log:
Resolve regression, where for externals status absolute paths where provided
even though the caller requested relative paths.
(Our test suite currently ignores these lines. This patch is a preparation
for fixing that)
* subversion/libsvn_client/client.h
(svn_client__do_external_status): Provide information on how to show paths
as relative. Rename pool to scratch_pool
* subversion/libsvn_client/externals.c
(svn_client__do_external_status): Calculate relative paths if requested.
* subversion/libsvn_client/status.c
(svn_client_status5): Update caller.
Modified:
subversion/trunk/subversion/libsvn_client/client.h
subversion/trunk/subversion/libsvn_client/externals.c
subversion/trunk/subversion/libsvn_client/status.c
Modified: subversion/trunk/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=1434750&r1=1434749&r2=1434750&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Thu Jan 17 16:04:45 2013
@@ -1090,7 +1090,11 @@ svn_client__export_externals(apr_hash_t
/* Perform status operations on each external in EXTERNAL_MAP, a const char *
local_abspath of all externals mapping to the const char* defining_abspath.
- All other options are the same as those passed to svn_client_status(). */
+ All other options are the same as those passed to svn_client_status().
+
+ If ANCHOR_ABSPATH and ANCHOR-RELPATH are not null, use them to provide
+ properly formatted relative paths
+ */
svn_error_t *
svn_client__do_external_status(svn_client_ctx_t *ctx,
apr_hash_t *external_map,
@@ -1098,9 +1102,11 @@ svn_client__do_external_status(svn_clien
svn_boolean_t get_all,
svn_boolean_t update,
svn_boolean_t no_ignore,
+ const char *anchor_abspath,
+ const char *anchor_relpath,
svn_client_status_func_t status_func,
void *status_baton,
- apr_pool_t *pool);
+ apr_pool_t *scratch_pool);
/* List external items defined on each external in EXTERNALS, a const char *
Modified: subversion/trunk/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/externals.c?rev=1434750&r1=1434749&r2=1434750&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/externals.c (original)
+++ subversion/trunk/subversion/libsvn_client/externals.c Thu Jan 17 16:04:45 2013
@@ -1125,17 +1125,19 @@ svn_client__do_external_status(svn_clien
svn_boolean_t get_all,
svn_boolean_t update,
svn_boolean_t no_ignore,
+ const char *anchor_abspath,
+ const char *anchor_relpath,
svn_client_status_func_t status_func,
void *status_baton,
- apr_pool_t *pool)
+ apr_pool_t *scratch_pool)
{
apr_hash_index_t *hi;
- apr_pool_t *iterpool = svn_pool_create(pool);
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
/* Loop over the hash of new values (we don't care about the old
ones). This is a mapping of versioned directories to property
values. */
- for (hi = apr_hash_first(pool, external_map);
+ for (hi = apr_hash_first(scratch_pool, external_map);
hi;
hi = apr_hash_next(hi))
{
@@ -1144,6 +1146,7 @@ svn_client__do_external_status(svn_clien
const char *defining_abspath = svn__apr_hash_index_val(hi);
svn_node_kind_t kind;
svn_opt_revision_t opt_rev;
+ const char *status_path;
svn_pool_clear(iterpool);
@@ -1174,8 +1177,17 @@ svn_client__do_external_status(svn_clien
svn_wc_notify_status_external,
iterpool), iterpool);
+ status_path = local_abspath;
+ if (anchor_abspath)
+ {
+ status_path = svn_dirent_join(anchor_relpath,
+ svn_dirent_skip_ancestor(anchor_abspath,
+ status_path),
+ iterpool);
+ }
+
/* And then do the status. */
- SVN_ERR(svn_client_status5(NULL, ctx, local_abspath, &opt_rev, depth,
+ SVN_ERR(svn_client_status5(NULL, ctx, status_path, &opt_rev, depth,
get_all, update, no_ignore, FALSE, FALSE,
NULL, status_func, status_baton,
iterpool));
Modified: subversion/trunk/subversion/libsvn_client/status.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/status.c?rev=1434750&r1=1434749&r2=1434750&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/status.c (original)
+++ subversion/trunk/subversion/libsvn_client/status.c Thu Jan 17 16:04:45 2013
@@ -530,6 +530,7 @@ svn_client_status5(svn_revnum_t *result_
SVN_ERR(svn_client__do_external_status(ctx, external_map,
depth, get_all,
update, no_ignore,
+ sb.anchor_abspath, sb.anchor_relpath,
status_func, status_baton, pool));
}