This is an obvious fix, right? But the adjustments needed to a couple of callers are not obvious.
[[[
Fix svn_wc__node_get_base_rev() -- don't report the working revision.
A follow-up to r1088832.
* subversion/libsvn_wc/node.c
(get_base_rev): If there is no base version, don't report the working
revision instead, just fail.
* subversion/libsvn_client/copy.c
(wc_to_repos_copy): If copying from the base rev, query the base rev,
else ...?
### Unfinished.
* subversion/libsvn_client/mergeinfo.c
(svn_client__get_wc_mergeinfo): If querying the base rev fails, set the
local variable to SVN_INVALID_REVNUM.
### This is a behaviour change, in cases where there's no base node but
there is a working node that has a rev num.--This line, and those below, will be ignored--
Index: subversion/libsvn_wc/node.c
===================================================================
--- subversion/libsvn_wc/node.c (revision 1325242)
+++ subversion/libsvn_wc/node.c (working copy)
@@ -879,34 +879,17 @@ svn_wc__node_has_working(svn_boolean_t *
static svn_error_t *
get_base_rev(svn_revnum_t *base_revision,
svn_wc__db_t *db,
const char *local_abspath,
apr_pool_t *scratch_pool)
{
- svn_boolean_t have_base;
- svn_error_t *err;
-
- err = svn_wc__db_base_get_info(NULL, NULL, base_revision, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
- db, local_abspath,
- scratch_pool, scratch_pool);
-
- if (!err || err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
- return svn_error_trace(err);
-
- svn_error_clear(err);
-
- SVN_ERR(svn_wc__db_read_info(NULL, NULL, base_revision,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, &have_base, NULL,
- NULL, NULL, NULL, NULL, NULL,
- db, local_abspath,
- scratch_pool, scratch_pool));
-
+ SVN_ERR(svn_wc__db_base_get_info(NULL, NULL, base_revision, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL,
+ db, local_abspath,
+ scratch_pool, scratch_pool));
return SVN_NO_ERROR;
}
svn_error_t *
svn_wc__node_get_base_rev(svn_revnum_t *base_revision,
svn_wc_context_t *wc_ctx,
Index: subversion/libsvn_client/copy.c
===================================================================
--- subversion/libsvn_client/copy.c (revision 1325253)
+++ subversion/libsvn_client/copy.c (working copy)
@@ -1205,7 +1205,7 @@ wc_to_repos_copy(const apr_array_header_
iterpool = svn_pool_create(pool);
/* Verify that all the source paths exist, are versioned, etc.
- We'll do so by querying the base revisions of those things (which
+ We'll do so by querying the revisions of those things (which
we'll need to know later anyway). */
for (i = 0; i < copy_pairs->nelts; i++)
{
@@ -1213,8 +1213,11 @@ wc_to_repos_copy(const apr_array_header_
svn_client__copy_pair_t *);
svn_pool_clear(iterpool);
- SVN_ERR(svn_wc__node_get_base_rev(&pair->src_revnum, ctx->wc_ctx,
- pair->src_abspath_or_url, iterpool));
+ if (pair->src_peg_revision.kind == svn_opt_revision_base)
+ SVN_ERR(svn_wc__node_get_base_rev(&pair->src_revnum, ctx->wc_ctx,
+ pair->src_abspath_or_url, iterpool));
+ else /*if (pair->src_peg_revision.kind == svn_opt_revision_working)*/
+ { SVN_DBG(("%d,%d\n", pair->src_peg_revision.kind, pair->src_op_revision.kind)); }
}
/* Determine the longest common ancestor for the destinations, and open an RA
Index: subversion/libsvn_client/mergeinfo.c
===================================================================
--- subversion/libsvn_client/mergeinfo.c (revision 1325253)
+++ subversion/libsvn_client/mergeinfo.c (working copy)
@@ -217,8 +217,15 @@ svn_client__get_wc_mergeinfo(svn_mergein
if (limit_abspath)
SVN_ERR_ASSERT(svn_dirent_is_absolute(limit_abspath));
- SVN_ERR(svn_wc__node_get_base_rev(&base_revision, ctx->wc_ctx,
- local_abspath, scratch_pool));
+ {
+ svn_error_t *err = svn_wc__node_get_base_rev(&base_revision, ctx->wc_ctx,
+ local_abspath, scratch_pool);
+ if (err && err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND)
+ SVN_ERR(err);
+
+ svn_error_clear(err);
+ base_revision = SVN_INVALID_REVNUM;
+ }
iterpool = svn_pool_create(scratch_pool);
while (TRUE)
(Tests still running.)
- Julian
Received on 2012-04-12 15:56:53 CEST