You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2015/06/25 10:00:58 UTC
svn commit: r1687422 [2/3] - in /subversion/branches/fsx-1.10: ./
build/ac-macros/ subversion/include/ subversion/libsvn_client/
subversion/libsvn_fs_fs/ subversion/libsvn_repos/ subversion/libsvn_subr/
subversion/mod_dav_svn/ subversion/mod_dav_svn/re...
Modified: subversion/branches/fsx-1.10/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/mod_dav_svn/repos.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/fsx-1.10/subversion/mod_dav_svn/repos.c Thu Jun 25 08:00:57 2015
@@ -929,14 +929,14 @@ prep_working(dav_resource_combined *comb
if (txn_name == NULL)
{
if (!comb->priv.root.activity_id)
- return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0, 0,
"The request did not specify an activity ID");
txn_name = dav_svn__get_txn(comb->priv.repos,
comb->priv.root.activity_id);
if (txn_name == NULL)
{
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"An unknown activity was specified in the "
"URL. This is generally caused by a "
"problem in the client software.");
@@ -952,7 +952,7 @@ prep_working(dav_resource_combined *comb
if (serr->apr_err == SVN_ERR_FS_NO_SUCH_TRANSACTION)
{
svn_error_clear(serr);
- return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
"An activity was specified and found, but "
"the corresponding SVN FS transaction was "
"not found.");
@@ -1012,7 +1012,7 @@ prep_working(dav_resource_combined *comb
}
else if (!svn_string_compare(current_author, &request_author))
{
- return dav_svn__new_error(pool, HTTP_NOT_IMPLEMENTED, 0,
+ return dav_svn__new_error(pool, HTTP_NOT_IMPLEMENTED, 0, 0,
"Multi-author commits not supported.");
}
}
@@ -1067,7 +1067,7 @@ prep_activity(dav_resource_combined *com
const char *txn_name;
if (!comb->priv.root.activity_id)
- return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0, 0,
"The request did not specify an activity ID");
txn_name = dav_svn__get_txn(comb->priv.repos, comb->priv.root.activity_id);
@@ -1094,7 +1094,7 @@ prep_private(dav_resource_combined *comb
/* Open the named transaction. */
if (comb->priv.root.txn_name == NULL)
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"An unknown txn name was specified in the "
"URL.");
@@ -1107,7 +1107,7 @@ prep_private(dav_resource_combined *comb
{
svn_error_clear(serr);
comb->res.exists = FALSE;
- return dav_svn__new_error(pool, HTTP_NOT_FOUND, 0,
+ return dav_svn__new_error(pool, HTTP_NOT_FOUND, 0, 0,
"Named transaction doesn't exist.");
}
return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
@@ -1158,7 +1158,7 @@ prep_resource(dav_resource_combined *com
return (*scan->prep)(comb);
}
- return dav_svn__new_error(comb->res.pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(comb->res.pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
"DESIGN FAILURE: unknown resource type");
}
@@ -1256,7 +1256,7 @@ dav_svn_split_uri2(request_rec *r,
{
/* ### are SVN_ERR_APMOD codes within the right numeric space? */
return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR,
- SVN_ERR_APMOD_MISSING_PATH_TO_FS,
+ SVN_ERR_APMOD_MISSING_PATH_TO_FS, 0,
"The server is misconfigured: "
"either an SVNPath or SVNParentPath "
"directive is required to specify the location "
@@ -1339,7 +1339,7 @@ dav_svn_split_uri2(request_rec *r,
{
/* ### are SVN_ERR_APMOD codes within the right numeric space? */
return dav_svn__new_error(pool, HTTP_FORBIDDEN,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"The URI does not contain the name "
"of a repository.");
}
@@ -1387,7 +1387,7 @@ dav_svn_split_uri2(request_rec *r,
{
/* relative is just "!svn", which is malformed. */
return dav_svn__new_error(pool, HTTP_NOT_FOUND,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"Nothing follows the svn special_uri.");
}
else
@@ -1414,7 +1414,7 @@ dav_svn_split_uri2(request_rec *r,
else
return dav_svn__new_error(
pool, HTTP_NOT_FOUND,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"Missing info after special_uri.");
}
else if (relative[len3] == '/')
@@ -1438,7 +1438,7 @@ dav_svn_split_uri2(request_rec *r,
if (j != (defn->numcomponents - 1))
return dav_svn__new_error(
pool, HTTP_NOT_FOUND,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"Not enough components after "
"special_uri.");
@@ -1458,7 +1458,7 @@ dav_svn_split_uri2(request_rec *r,
{
return
dav_svn__new_error(pool, HTTP_NOT_FOUND,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"Unknown data after special_uri.");
}
@@ -1469,7 +1469,7 @@ dav_svn_split_uri2(request_rec *r,
if (defn->name == NULL)
return
dav_svn__new_error(pool, HTTP_NOT_FOUND,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"Couldn't match subdir after special_uri.");
}
}
@@ -1571,7 +1571,7 @@ get_parentpath_resource(request_rec *r,
"/", SVN_VA_NULL);
apr_table_setn(r->headers_out, "Location",
ap_construct_url(r->pool, new_uri, r));
- return dav_svn__new_error(r->pool, HTTP_MOVED_PERMANENTLY, 0,
+ return dav_svn__new_error(r->pool, HTTP_MOVED_PERMANENTLY, 0, 0,
"Requests for a collection must have a "
"trailing slash on the URI.");
}
@@ -1994,7 +1994,7 @@ parse_querystring(request_rec *r, const
prevstr++;
peg_rev = SVN_STR_TO_REV(prevstr);
if (!SVN_IS_VALID_REVNUM(peg_rev))
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"invalid peg rev in query string");
}
else
@@ -2013,7 +2013,7 @@ parse_querystring(request_rec *r, const
wrevstr++;
working_rev = SVN_STR_TO_REV(wrevstr);
if (!SVN_IS_VALID_REVNUM(working_rev))
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"invalid working rev in query string");
}
else
@@ -2027,7 +2027,7 @@ parse_querystring(request_rec *r, const
Our node-tracing algorithms can't handle that scenario, so we'll
disallow it here. */
if (working_rev > peg_rev)
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"working rev greater than peg rev.");
/* If WORKING_REV and PEG_REV are equivalent, we want to return the
@@ -2069,7 +2069,7 @@ parse_querystring(request_rec *r, const
newpath = apr_hash_get(locations, &working_rev, sizeof(svn_revnum_t));
if (! newpath)
- return dav_svn__new_error(pool, HTTP_NOT_FOUND, 0,
+ return dav_svn__new_error(pool, HTTP_NOT_FOUND, 0, 0,
"path doesn't exist in that revision.");
/* Redirect folks to a canonical, peg-revision-only location.
@@ -2089,7 +2089,7 @@ parse_querystring(request_rec *r, const
return dav_svn__new_error(r->pool,
prevstr ? HTTP_MOVED_PERMANENTLY
: HTTP_MOVED_TEMPORARILY,
- 0, "redirecting to canonical location");
+ 0, 0, "redirecting to canonical location");
}
return NULL;
@@ -2149,7 +2149,7 @@ get_resource(request_rec *r,
/* Marshall the error back to the client by generating by
* way of the dav_svn__error_response_tag trick. */
err = dav_svn__new_error(r->pool, HTTP_METHOD_NOT_ALLOWED,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"The URI does not contain the name "
"of a repository.");
/* can't use r->allowed since the default handler isn't called */
@@ -2550,7 +2550,7 @@ get_resource(request_rec *r,
SVN_VA_NULL);
apr_table_setn(r->headers_out, "Location",
ap_construct_url(r->pool, new_path, r));
- return dav_svn__new_error(r->pool, HTTP_MOVED_PERMANENTLY, 0,
+ return dav_svn__new_error(r->pool, HTTP_MOVED_PERMANENTLY, 0, 0,
"Requests for a collection must have a "
"trailing slash on the URI.");
}
@@ -2575,7 +2575,7 @@ get_resource(request_rec *r,
/* ### pick something other than HTTP_INTERNAL_SERVER_ERROR */
/* ### are SVN_ERR_APMOD codes within the right numeric space? */
return dav_svn__new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"The URI indicated a resource within Subversion's "
"special resource area, but does not exist. This "
"is generally caused by a problem in the client "
@@ -2684,7 +2684,7 @@ get_parent_resource(const dav_resource *
/* If we didn't create parent resource above, complain. */
if (! *parent_resource)
- return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
apr_psprintf(resource->pool,
"get_parent_resource was called for "
"%s (type %d)",
@@ -2792,7 +2792,8 @@ open_stream(const dav_resource *resource
{
if (resource->type != DAV_RESOURCE_TYPE_WORKING)
{
- return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED,
+ 0, 0,
"Resource body changes may only be made to "
"working resources (at this time).");
}
@@ -2801,7 +2802,7 @@ open_stream(const dav_resource *resource
/* ### TODO: Can we support range writes someday? */
if (mode == DAV_MODE_WRITE_SEEKABLE)
{
- return dav_svn__new_error(resource->pool, HTTP_NOT_IMPLEMENTED, 0,
+ return dav_svn__new_error(resource->pool, HTTP_NOT_IMPLEMENTED, 0, 0,
"Resource body writes cannot use ranges "
"(at this time).");
}
@@ -2995,7 +2996,7 @@ seek_stream(dav_stream *stream, apr_off_
{
/* ### fill this in */
- return dav_svn__new_error(stream->res->pool, HTTP_NOT_IMPLEMENTED, 0,
+ return dav_svn__new_error(stream->res->pool, HTTP_NOT_IMPLEMENTED, 0, 0,
"Resource body read/write cannot use ranges "
"(at this time)");
}
@@ -3301,7 +3302,7 @@ deliver(const dav_resource *resource, ap
&& resource->type != DAV_RESOURCE_TYPE_WORKING
&& resource->info->restype != DAV_SVN_RESTYPE_PARENTPATH_COLLECTION))
{
- return dav_svn__new_error(resource->pool, HTTP_CONFLICT, 0,
+ return dav_svn__new_error(resource->pool, HTTP_CONFLICT, 0, 0,
"Cannot GET this type of resource.");
}
@@ -3642,7 +3643,8 @@ deliver(const dav_resource *resource, ap
bkt = apr_bucket_eos_create(output->c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, bkt);
if ((status = ap_pass_brigade(output, bb)) != APR_SUCCESS)
- return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR,
+ 0, status,
"Could not write EOS to filter.");
return NULL;
@@ -3689,7 +3691,7 @@ deliver(const dav_resource *resource, ap
"is really a file",
resource->pool);
if (!is_file)
- return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0, 0,
apr_psprintf(resource->pool,
"the delta base of '%s' does not refer "
"to a file in revision %ld",
@@ -3850,9 +3852,9 @@ deliver(const dav_resource *resource, ap
output->c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, bkt);
if ((status = ap_pass_brigade(output, bb)) != APR_SUCCESS) {
- /* ### what to do with status; and that HTTP code... */
+ /* ### that HTTP code... */
return dav_svn__new_error(resource->pool,
- HTTP_INTERNAL_SERVER_ERROR, 0,
+ HTTP_INTERNAL_SERVER_ERROR, 0, status,
"Could not write data to filter.");
}
}
@@ -3862,9 +3864,9 @@ deliver(const dav_resource *resource, ap
bkt = apr_bucket_eos_create(output->c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, bkt);
if ((status = ap_pass_brigade(output, bb)) != APR_SUCCESS) {
- /* ### what to do with status; and that HTTP code... */
+ /* ### that HTTP code... */
return dav_svn__new_error(resource->pool,
- HTTP_INTERNAL_SERVER_ERROR, 0,
+ HTTP_INTERNAL_SERVER_ERROR, 0, status,
"Could not write EOS to filter.");
}
@@ -3882,7 +3884,7 @@ create_collection(dav_resource *resource
if (resource->type != DAV_RESOURCE_TYPE_WORKING
&& resource->type != DAV_RESOURCE_TYPE_REGULAR)
{
- return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"Collections can only be created within a "
"working or regular collection (at this "
"time).");
@@ -3891,7 +3893,7 @@ create_collection(dav_resource *resource
/* ...regular resources allowed only if autoversioning is turned on. */
if (resource->type == DAV_RESOURCE_TYPE_REGULAR
&& ! (resource->info->repos->autoversioning))
- return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"MKCOL called on regular resource, but "
"autoversioning is not active.");
@@ -3963,12 +3965,12 @@ copy_resource(const dav_resource *src,
a new baseline afterwards. We need to safeguard here that nobody
is calling COPY with the baseline as a Destination! */
if (dst->baselined && dst->type == DAV_RESOURCE_TYPE_VERSION)
- return dav_svn__new_error(src->pool, HTTP_PRECONDITION_FAILED, 0,
+ return dav_svn__new_error(src->pool, HTTP_PRECONDITION_FAILED, 0, 0,
"Illegal: COPY Destination is a baseline.");
if (dst->type == DAV_RESOURCE_TYPE_REGULAR
&& !(dst->info->repos->autoversioning))
- return dav_svn__new_error(dst->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(dst->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"COPY called on regular resource, but "
"autoversioning is not active.");
@@ -3998,7 +4000,7 @@ copy_resource(const dav_resource *src,
if (!serr && (strcmp(src_repos_path, dst_repos_path) != 0))
return dav_svn__new_error_svn(
- dst->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ dst->pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
"Copy source and destination are in different repositories");
}
else
@@ -4044,13 +4046,13 @@ remove_resource(dav_resource *resource,
|| resource->type == DAV_RESOURCE_TYPE_ACTIVITY
|| (resource->type == DAV_RESOURCE_TYPE_PRIVATE
&& resource->info->restype == DAV_SVN_RESTYPE_TXN_COLLECTION)))
- return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"DELETE called on invalid resource type.");
/* ...and regular resources only if autoversioning is turned on. */
if (resource->type == DAV_RESOURCE_TYPE_REGULAR
&& ! (resource->info->repos->autoversioning))
- return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"DELETE called on regular resource, but "
"autoversioning is not active.");
@@ -4208,7 +4210,7 @@ move_resource(dav_resource *src,
if (src->type != DAV_RESOURCE_TYPE_REGULAR
|| dst->type != DAV_RESOURCE_TYPE_REGULAR
|| !(src->info->repos->autoversioning))
- return dav_svn__new_error(dst->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(dst->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"MOVE only allowed on two public URIs, and "
"autoversioning must be active.");
@@ -4307,7 +4309,7 @@ do_walk(walker_ctx_t *ctx,
/* ### need to allow more walking in the future */
if (params->root->type != DAV_RESOURCE_TYPE_REGULAR)
{
- return dav_svn__new_error(params->pool, HTTP_METHOD_NOT_ALLOWED, 0,
+ return dav_svn__new_error(params->pool, HTTP_METHOD_NOT_ALLOWED, 0, 0,
"Walking the resource hierarchy can only be "
"done on 'regular' resources [at this time].");
}
@@ -4630,7 +4632,7 @@ dav_svn__create_version_resource(dav_res
result = parse_version_uri(comb, uri, NULL, 0);
if (result != 0)
- return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
"Could not parse version resource uri.");
err = prep_version(comb);
@@ -4658,11 +4660,11 @@ handle_post_request(request_rec *r,
status = dav_svn__parse_request_skel(&request_skel, r, pool);
if (status != OK)
- return dav_svn__new_error(pool, status, 0,
+ return dav_svn__new_error(pool, status, 0, 0,
"Error parsing skel POST request body.");
if (svn_skel__list_length(request_skel) < 1)
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"Unable to identify skel POST request flavor.");
post_skel = request_skel->children;
@@ -4680,7 +4682,7 @@ handle_post_request(request_rec *r,
request_skel, output);
}
- return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(pool, HTTP_BAD_REQUEST, 0, 0,
"Unsupported skel POST request flavor.");
}
@@ -4733,7 +4735,7 @@ int dav_svn__method_post(request_rec *r)
}
else
{
- derr = dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ derr = dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0, 0,
"Unsupported POST request type.");
}
Modified: subversion/branches/fsx-1.10/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/mod_dav_svn/util.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/fsx-1.10/subversion/mod_dav_svn/util.c Thu Jun 25 08:00:57 2015
@@ -46,6 +46,7 @@ dav_error *
dav_svn__new_error(apr_pool_t *pool,
int status,
int error_id,
+ apr_status_t aprerr,
const char *desc)
{
if (error_id == 0)
@@ -59,10 +60,10 @@ dav_svn__new_error(apr_pool_t *pool,
* > 2.2 below perpetuates this.
*/
#if AP_MODULE_MAGIC_AT_LEAST(20091119,0)
- return dav_new_error(pool, status, error_id, 0, desc);
+ return dav_new_error(pool, status, error_id, aprerr, desc);
#else
- errno = 0; /* For the same reason as in dav_svn__new_error_svn */
+ errno = aprerr; /* For the same reason as in dav_svn__new_error_svn */
return dav_new_error(pool, status, error_id, desc);
#endif
@@ -72,20 +73,22 @@ dav_error *
dav_svn__new_error_svn(apr_pool_t *pool,
int status,
int error_id,
+ apr_status_t aprerr,
const char *desc)
{
if (error_id == 0)
error_id = SVN_ERR_RA_DAV_REQUEST_FAILED;
#if AP_MODULE_MAGIC_AT_LEAST(20091119,0)
- return dav_new_error_tag(pool, status, error_id, 0,
+ return dav_new_error_tag(pool, status, error_id, aprerr,
desc, SVN_DAV_ERROR_NAMESPACE, SVN_DAV_ERROR_TAG);
#else
- /* dav_new_error_tag will record errno but Subversion makes no attempt
- to ensure that it is valid. We reset it to avoid putting incorrect
- information into the error log, at the expense of possibly removing
- valid information. */
- errno = 0;
+ /* dav_new_error_tag will record errno so we use it to pass aprerr.
+ This overrwites any existing errno value but since Subversion
+ makes no attempt to avoid system calls after a failed system call
+ there is no guarantee that any existing errno represents a
+ relevant error. */
+ errno = aprerr;
return dav_new_error_tag(pool, status, error_id, desc,
SVN_DAV_ERROR_NAMESPACE, SVN_DAV_ERROR_TAG);
@@ -101,7 +104,7 @@ build_error_chain(apr_pool_t *pool, svn_
char buffer[128];
const char *msg = svn_err_best_message(err, buffer, sizeof(buffer));
- dav_error *derr = dav_svn__new_error_svn(pool, status, err->apr_err,
+ dav_error *derr = dav_svn__new_error_svn(pool, status, err->apr_err, 0,
apr_pstrdup(pool, msg));
if (err->child)
@@ -540,7 +543,7 @@ dav_svn__test_canonical(const char *path
/* Otherwise, generate a generic HTTP_BAD_REQUEST error. */
return dav_svn__new_error_svn(
- pool, HTTP_BAD_REQUEST, 0,
+ pool, HTTP_BAD_REQUEST, 0, 0,
apr_psprintf(pool,
"Path '%s' is not canonicalized; "
"there is a problem with the client.", path));
@@ -658,7 +661,7 @@ dav_svn__final_flush_or_error(request_re
{
apr_status_t apr_err = ap_fflush(output, bb);
if (apr_err && (! derr))
- derr = dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ derr = dav_svn__new_error(pool, HTTP_INTERNAL_SERVER_ERROR, 0, apr_err,
"Error flushing brigade.");
}
return derr;
Modified: subversion/branches/fsx-1.10/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/mod_dav_svn/version.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/fsx-1.10/subversion/mod_dav_svn/version.c Thu Jun 25 08:00:57 2015
@@ -88,7 +88,7 @@ set_auto_revprops(dav_resource *resource
if (! (resource->type == DAV_RESOURCE_TYPE_WORKING
&& resource->info->auto_checked_out))
- return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
"Set_auto_revprops called on invalid resource.");
if ((serr = dav_svn__attach_auto_revprops(resource->info->root.txn,
@@ -396,14 +396,14 @@ vsn_control(dav_resource *resource, cons
/* All mod_dav_svn resources are versioned objects; so it doesn't
make sense to call vsn_control on a resource that exists . */
if (resource->exists)
- return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0,
+ return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST, 0, 0,
"vsn_control called on already-versioned "
"resource.");
/* Only allow a NULL target, which means an create an 'empty' VCR. */
if (target != NULL)
return dav_svn__new_error_svn(resource->pool, HTTP_NOT_IMPLEMENTED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"vsn_control called with non-null target");
/* This is kind of silly. The docstring for this callback says it's
@@ -451,13 +451,13 @@ dav_svn__checkout(dav_resource *resource
if (resource->type != DAV_RESOURCE_TYPE_REGULAR)
return dav_svn__new_error_svn(resource->pool, HTTP_METHOD_NOT_ALLOWED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"auto-checkout attempted on non-regular "
"version-controlled resource");
if (resource->baselined)
return dav_svn__new_error_svn(resource->pool, HTTP_METHOD_NOT_ALLOWED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"auto-checkout attempted on baseline "
"collection, which is not supported");
@@ -503,7 +503,7 @@ dav_svn__checkout(dav_resource *resource
shared_activity);
if (! shared_txn_name)
return dav_svn__new_error(resource->pool,
- HTTP_INTERNAL_SERVER_ERROR, 0,
+ HTTP_INTERNAL_SERVER_ERROR, 0, 0,
"Cannot look up a txn_name by activity");
}
@@ -542,21 +542,21 @@ dav_svn__checkout(dav_resource *resource
if (resource->type != DAV_RESOURCE_TYPE_VERSION)
{
return dav_svn__new_error_svn(resource->pool, HTTP_METHOD_NOT_ALLOWED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"CHECKOUT can only be performed on a "
"version resource");
}
if (create_activity)
{
return dav_svn__new_error_svn(resource->pool, HTTP_NOT_IMPLEMENTED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"CHECKOUT cannot create an activity at "
"this time. Use MKACTIVITY first");
}
if (is_unreserved)
{
return dav_svn__new_error_svn(resource->pool, HTTP_NOT_IMPLEMENTED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"Unreserved checkouts are not yet "
"available. A version history may not be "
"checked out more than once, into a "
@@ -565,7 +565,7 @@ dav_svn__checkout(dav_resource *resource
if (activities == NULL)
{
return dav_svn__new_error_svn(resource->pool, HTTP_CONFLICT,
- SVN_ERR_INCOMPLETE_DATA,
+ SVN_ERR_INCOMPLETE_DATA, 0,
"An activity must be provided for "
"checkout");
}
@@ -573,7 +573,7 @@ dav_svn__checkout(dav_resource *resource
if (activities->nelts != 1)
{
return dav_svn__new_error_svn(resource->pool, HTTP_CONFLICT,
- SVN_ERR_INCORRECT_PARAMS,
+ SVN_ERR_INCORRECT_PARAMS, 0,
"Only one activity may be specified within "
"the CHECKOUT");
}
@@ -592,7 +592,7 @@ dav_svn__checkout(dav_resource *resource
if (parse.activity_id == NULL)
{
return dav_svn__new_error_svn(resource->pool, HTTP_CONFLICT,
- SVN_ERR_INCORRECT_PARAMS,
+ SVN_ERR_INCORRECT_PARAMS, 0,
"The provided href is not an activity URI");
}
@@ -600,7 +600,7 @@ dav_svn__checkout(dav_resource *resource
parse.activity_id)) == NULL)
{
return dav_svn__new_error_svn(resource->pool, HTTP_CONFLICT,
- SVN_ERR_APMOD_ACTIVITY_NOT_FOUND,
+ SVN_ERR_APMOD_ACTIVITY_NOT_FOUND, 0,
"The specified activity does not exist");
}
@@ -630,7 +630,7 @@ dav_svn__checkout(dav_resource *resource
if (resource->info->root.rev != youngest)
{
return dav_svn__new_error_svn(resource->pool, HTTP_CONFLICT,
- SVN_ERR_APMOD_BAD_BASELINE,
+ SVN_ERR_APMOD_BAD_BASELINE, 0,
"The specified baseline is not the "
"latest baseline, so it may not be "
"checked out");
@@ -728,7 +728,7 @@ dav_svn__checkout(dav_resource *resource
/* The item being modified is older than the one in the
transaction. The client is out of date. */
return dav_svn__new_error_svn
- (resource->pool, HTTP_CONFLICT, SVN_ERR_FS_CONFLICT,
+ (resource->pool, HTTP_CONFLICT, SVN_ERR_FS_CONFLICT, 0,
"resource out of date; try updating");
}
else if (resource->info->root.rev > txn_created_rev)
@@ -745,7 +745,7 @@ dav_svn__checkout(dav_resource *resource
resource->pool)))
{
err = dav_svn__new_error_svn
- (resource->pool, HTTP_CONFLICT, serr->apr_err,
+ (resource->pool, HTTP_CONFLICT, serr->apr_err, 0,
"Unable to fetch the node revision id of the version "
"resource within the revision");
svn_error_clear(serr);
@@ -754,7 +754,7 @@ dav_svn__checkout(dav_resource *resource
if (node_relation != svn_fs_node_unchanged)
{
return dav_svn__new_error_svn
- (resource->pool, HTTP_CONFLICT, SVN_ERR_FS_CONFLICT,
+ (resource->pool, HTTP_CONFLICT, SVN_ERR_FS_CONFLICT, 0,
"version resource newer than txn (restart the commit)");
}
}
@@ -773,7 +773,7 @@ uncheckout(dav_resource *resource)
{
if (resource->type != DAV_RESOURCE_TYPE_WORKING)
return dav_svn__new_error_svn(resource->pool, HTTP_INTERNAL_SERVER_ERROR,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"UNCHECKOUT called on non-working resource");
/* Try to abort the txn if it exists; but don't try too hard. :-) */
@@ -914,7 +914,7 @@ dav_svn__checkin(dav_resource *resource,
if (resource->type != DAV_RESOURCE_TYPE_WORKING)
return dav_svn__new_error_svn(resource->pool, HTTP_INTERNAL_SERVER_ERROR,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"CHECKIN called on non-working resource");
/* If the global autoversioning activity still exists, that means
@@ -940,19 +940,22 @@ dav_svn__checkin(dav_resource *resource,
shared_txn_name = dav_svn__get_txn(resource->info->repos,
shared_activity);
if (! shared_txn_name)
- return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR,
+ 0, 0,
"Cannot look up a txn_name by activity");
/* Sanity checks */
if (resource->info->root.txn_name
&& (strcmp(shared_txn_name, resource->info->root.txn_name) != 0))
- return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR,
+ 0, 0,
"Internal txn_name doesn't match "
"autoversioning transaction.");
if (! resource->info->root.txn)
/* should already be open by checkout */
- return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR, 0,
+ return dav_svn__new_error(resource->pool, HTTP_INTERNAL_SERVER_ERROR,
+ 0, 0,
"Autoversioning txn isn't open "
"when it should be.");
@@ -1018,7 +1021,7 @@ dav_svn__checkin(dav_resource *resource,
{
return dav_svn__new_error(resource->pool,
HTTP_INTERNAL_SERVER_ERROR,
- 0,
+ 0, 0,
"Commit failed but there was no error "
"provided.");
}
@@ -1151,7 +1154,7 @@ deliver_report(request_rec *r,
/* ### what is a good error for an unknown report? */
return dav_svn__new_error_svn(resource->pool, HTTP_NOT_IMPLEMENTED,
- SVN_ERR_UNSUPPORTED_FEATURE,
+ SVN_ERR_UNSUPPORTED_FEATURE, 0,
"The requested report is unknown");
}
@@ -1180,7 +1183,7 @@ make_activity(dav_resource *resource)
case an older mod_dav doesn't do the check for us. */
if (! can_be_activity(resource))
return dav_svn__new_error_svn(resource->pool, HTTP_FORBIDDEN,
- SVN_ERR_APMOD_MALFORMED_URI,
+ SVN_ERR_APMOD_MALFORMED_URI, 0,
"Activities cannot be created at that "
"location; query the "
"DAV:activity-collection-set property");
@@ -1428,7 +1431,7 @@ merge(dav_resource *target,
&& source->info->restype == DAV_SVN_RESTYPE_TXN_COLLECTION)))
{
return dav_svn__new_error_svn(pool, HTTP_METHOD_NOT_ALLOWED,
- SVN_ERR_INCORRECT_PARAMS,
+ SVN_ERR_INCORRECT_PARAMS, 0,
"MERGE can only be performed using an "
"activity or transaction resource as the "
"source");
@@ -1436,7 +1439,7 @@ merge(dav_resource *target,
if (! source->exists)
{
return dav_svn__new_error_svn(pool, HTTP_METHOD_NOT_ALLOWED,
- SVN_ERR_INCORRECT_PARAMS,
+ SVN_ERR_INCORRECT_PARAMS, 0,
"MERGE activity or transaction resource "
"does not exist");
}
@@ -1533,7 +1536,7 @@ merge(dav_resource *target,
{
return dav_svn__new_error(pool,
HTTP_INTERNAL_SERVER_ERROR,
- 0,
+ 0, 0,
"Commit failed but there was no error "
"provided.");
}
Modified: subversion/branches/fsx-1.10/subversion/svn/cl-conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/svn/cl-conflicts.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/svn/cl-conflicts.c (original)
+++ subversion/branches/fsx-1.10/subversion/svn/cl-conflicts.c Thu Jun 25 08:00:57 2015
@@ -301,32 +301,26 @@ svn_cl__get_human_readable_tree_conflict
conflict_action = svn_client_conflict_get_incoming_change(conflict);
conflict_reason = svn_client_conflict_get_local_change(conflict);
conflict_operation = svn_client_conflict_get_operation(conflict);
- conflict_node_kind = svn_client_conflict_get_node_kind(conflict);
+ conflict_node_kind = svn_client_conflict_tree_get_victim_node_kind(conflict);
/* Determine the node kind of the incoming change. */
incoming_kind = svn_node_unknown;
if (conflict_action == svn_wc_conflict_action_edit ||
conflict_action == svn_wc_conflict_action_delete)
{
- const svn_wc_conflict_version_t *src_left_version;
-
/* Change is acting on 'src_left' version of the node. */
- src_left_version = svn_client_conflict_get_src_left_version(conflict);
- if (src_left_version)
- incoming_kind = src_left_version->node_kind;
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
+ NULL, NULL, &incoming_kind, conflict, pool, pool));
}
else if (conflict_action == svn_wc_conflict_action_add ||
conflict_action == svn_wc_conflict_action_replace)
{
- const svn_wc_conflict_version_t *src_right_version;
-
/* Change is acting on 'src_right' version of the node.
*
* ### For 'replace', the node kind is ambiguous. However, src_left
* ### is NULL for replace, so we must use src_right. */
- src_right_version = svn_client_conflict_get_src_right_version(conflict);
- if (src_right_version)
- incoming_kind = src_right_version->node_kind;
+ SVN_ERR(svn_client_conflict_get_incoming_new_repos_location(
+ NULL, NULL, &incoming_kind, conflict, pool, pool));
}
reason = local_reason_str(conflict_node_kind, conflict_reason,
@@ -380,13 +374,16 @@ svn_cl__get_human_readable_action_descri
/* Helper for svn_cl__append_tree_conflict_info_xml().
- * Appends the attributes of the given VERSION to ATT_HASH.
+ * Appends the repository location of a conflicted node to ATT_HASH.
* SIDE is the content of the version tag's side="..." attribute,
* currently one of "source-left" or "source-right".*/
static svn_error_t *
add_conflict_version_xml(svn_stringbuf_t **pstr,
const char *side,
- const svn_wc_conflict_version_t *version,
+ const char *repos_root_url,
+ const char *repos_relpath,
+ svn_revnum_t peg_rev,
+ svn_node_kind_t node_kind,
apr_pool_t *pool)
{
apr_hash_t *att_hash = apr_hash_make(pool);
@@ -394,18 +391,17 @@ add_conflict_version_xml(svn_stringbuf_t
svn_hash_sets(att_hash, "side", side);
- if (version->repos_url)
- svn_hash_sets(att_hash, "repos-url", version->repos_url);
+ if (repos_root_url)
+ svn_hash_sets(att_hash, "repos-url", repos_root_url);
- if (version->path_in_repos)
- svn_hash_sets(att_hash, "path-in-repos", version->path_in_repos);
+ if (repos_relpath)
+ svn_hash_sets(att_hash, "path-in-repos", repos_relpath);
- if (SVN_IS_VALID_REVNUM(version->peg_rev))
- svn_hash_sets(att_hash, "revision", apr_ltoa(pool, version->peg_rev));
+ if (SVN_IS_VALID_REVNUM(peg_rev))
+ svn_hash_sets(att_hash, "revision", apr_ltoa(pool, peg_rev));
- if (version->node_kind != svn_node_unknown)
- svn_hash_sets(att_hash, "kind",
- svn_cl__node_kind_str_xml(version->node_kind));
+ if (node_kind != svn_node_unknown)
+ svn_hash_sets(att_hash, "kind", svn_cl__node_kind_str_xml(node_kind));
svn_xml_make_open_tag_hash(pstr, pool, svn_xml_self_closing,
"version", att_hash);
@@ -420,8 +416,10 @@ append_tree_conflict_info_xml(svn_string
{
apr_hash_t *att_hash = apr_hash_make(pool);
const char *tmp;
- const svn_wc_conflict_version_t *src_left_version;
- const svn_wc_conflict_version_t *src_right_version;
+ const char *repos_root_url;
+ const char *repos_relpath;
+ svn_revnum_t peg_rev;
+ svn_node_kind_t node_kind;
svn_hash_sets(att_hash, "victim",
svn_dirent_basename(
@@ -429,7 +427,7 @@ append_tree_conflict_info_xml(svn_string
svn_hash_sets(att_hash, "kind",
svn_cl__node_kind_str_xml(
- svn_client_conflict_get_node_kind(conflict)));
+ svn_client_conflict_tree_get_victim_node_kind(conflict)));
svn_hash_sets(att_hash, "operation",
svn_cl__operation_str_xml(
@@ -449,19 +447,30 @@ append_tree_conflict_info_xml(svn_string
/* Add child tags for OLDER_VERSION and THEIR_VERSION. */
- src_left_version = svn_client_conflict_get_src_left_version(conflict);
- if (src_left_version)
- SVN_ERR(add_conflict_version_xml(&str,
- "source-left",
- src_left_version,
- pool));
-
- src_right_version = svn_client_conflict_get_src_right_version(conflict);
- if (src_right_version)
+ SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL, conflict,
+ pool, pool));
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+ &peg_rev,
+ &node_kind,
+ conflict,
+ pool,
+ pool));
+ if (repos_root_url && repos_relpath)
+ SVN_ERR(add_conflict_version_xml(&str, "source-left",
+ repos_root_url, repos_relpath, peg_rev,
+ node_kind, pool));
+
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+ &peg_rev,
+ &node_kind,
+ conflict,
+ pool,
+ pool));
+ if (repos_root_url && repos_relpath)
SVN_ERR(add_conflict_version_xml(&str,
"source-right",
- src_right_version,
- pool));
+ repos_root_url, repos_relpath, peg_rev,
+ node_kind, pool));
svn_xml_make_close_tag(&str, pool, "tree-conflict");
@@ -477,8 +486,10 @@ svn_cl__append_conflict_info_xml(svn_str
const char *kind;
svn_wc_conflict_kind_t conflict_kind;
svn_wc_operation_t conflict_operation;
- const svn_wc_conflict_version_t *src_left_version;
- const svn_wc_conflict_version_t *src_right_version;
+ const char *repos_root_url;
+ const char *repos_relpath;
+ svn_revnum_t peg_rev;
+ svn_node_kind_t node_kind;
conflict_kind = svn_client_conflict_get_kind(conflict);
conflict_operation = svn_client_conflict_get_operation(conflict);
@@ -507,45 +518,60 @@ svn_cl__append_conflict_info_xml(svn_str
svn_xml_make_open_tag_hash(&str, scratch_pool,
svn_xml_normal, "conflict", att_hash);
- src_left_version = svn_client_conflict_get_src_left_version(conflict);
- if (src_left_version)
- SVN_ERR(add_conflict_version_xml(&str,
- "source-left",
- src_left_version,
- scratch_pool));
-
- src_right_version = svn_client_conflict_get_src_right_version(conflict);
- if (src_right_version)
- SVN_ERR(add_conflict_version_xml(&str,
- "source-right",
- src_right_version,
- scratch_pool));
+ SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL, conflict,
+ scratch_pool, scratch_pool));
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+ &peg_rev,
+ &node_kind,
+ conflict,
+ scratch_pool,
+ scratch_pool));
+ if (repos_root_url && repos_relpath)
+ SVN_ERR(add_conflict_version_xml(&str, "source-left",
+ repos_root_url, repos_relpath, peg_rev,
+ node_kind, scratch_pool));
+
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+ &peg_rev,
+ &node_kind,
+ conflict,
+ scratch_pool,
+ scratch_pool));
+ if (repos_root_url && repos_relpath)
+ SVN_ERR(add_conflict_version_xml(&str, "source-right",
+ repos_root_url, repos_relpath, peg_rev,
+ node_kind, scratch_pool));
switch (conflict_kind)
{
+ const char *base_abspath;
+ const char *my_abspath;
+ const char *their_abspath;
+
case svn_wc_conflict_kind_text:
+ SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath,
+ &base_abspath,
+ &their_abspath,
+ conflict, scratch_pool,
+ scratch_pool));
/* "<prev-base-file> xx </prev-base-file>" */
svn_cl__xml_tagged_cdata(
- &str, scratch_pool, "prev-base-file",
- svn_client_conflict_get_base_abspath(conflict));
+ &str, scratch_pool, "prev-base-file", base_abspath);
/* "<prev-wc-file> xx </prev-wc-file>" */
svn_cl__xml_tagged_cdata(
- &str, scratch_pool, "prev-wc-file",
- svn_client_conflict_get_my_abspath(conflict));
+ &str, scratch_pool, "prev-wc-file", my_abspath);
/* "<cur-base-file> xx </cur-base-file>" */
svn_cl__xml_tagged_cdata(
- &str, scratch_pool, "cur-base-file",
- svn_client_conflict_get_their_abspath(conflict));
+ &str, scratch_pool, "cur-base-file", their_abspath);
break;
case svn_wc_conflict_kind_property:
/* "<prop-file> xx </prop-file>" */
svn_cl__xml_tagged_cdata(
- &str, scratch_pool, "prop-file",
- svn_client_conflict_get_their_abspath(conflict));
+ &str, scratch_pool, "prop-file", their_abspath);
break;
default:
Modified: subversion/branches/fsx-1.10/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/svn/cl.h?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/svn/cl.h (original)
+++ subversion/branches/fsx-1.10/subversion/svn/cl.h Thu Jun 25 08:00:57 2015
@@ -777,15 +777,18 @@ svn_cl__args_to_target_array_print_reser
svn_boolean_t keep_dest_origpath_on_truepath_collision,
apr_pool_t *pool);
-/* Return a string showing NODE's kind, URL and revision, to the extent that
- * that information is available in NODE. If NODE itself is NULL, this prints
- * just a 'none' node kind.
+/* Return a string showing a conflicted node's kind, URL and revision,
+ * to the extent that that information is available. If REPOS_ROOT_URL or
+ * REPOS_RELPATH are NULL, this prints just a 'none' node kind.
* WC_REPOS_ROOT_URL should reflect the target working copy's repository
- * root URL. If NODE is from that same URL, the printed URL is abbreviated
+ * root URL. If the node is from that same URL, the printed URL is abbreviated
* to caret notation (^/). WC_REPOS_ROOT_URL may be NULL, in which case
* this function tries to print the conflicted node's complete URL. */
const char *
-svn_cl__node_description(const svn_wc_conflict_version_t *node,
+svn_cl__node_description(const char *repos_root_url,
+ const char *repos_relpath,
+ svn_revnum_t peg_rev,
+ svn_node_kind_t node_kind,
const char *wc_repos_root_URL,
apr_pool_t *pool);
Modified: subversion/branches/fsx-1.10/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/svn/conflict-callbacks.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/svn/conflict-callbacks.c (original)
+++ subversion/branches/fsx-1.10/subversion/svn/conflict-callbacks.c Thu Jun 25 08:00:57 2015
@@ -141,8 +141,13 @@ show_diff(const svn_wc_conflict_descript
svn_diff_t *diff;
svn_stream_t *output;
svn_diff_file_options_t *options;
+ const char *my_abspath;
+ const char *their_abspath;
const char *merged_file;
+ SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath, NULL,
+ &their_abspath,
+ desc, pool, pool));
merged_file = svn_client_conflict_get_merged_file(desc);
if (merged_file)
{
@@ -160,12 +165,12 @@ show_diff(const svn_wc_conflict_descript
* brought into the working copy by the update/switch/merge operation. */
if (svn_client_conflict_get_operation(desc) == svn_wc_operation_merge)
{
- path1 = svn_client_conflict_get_my_abspath(desc);
+ path1 = my_abspath;
label1 = _("MINE");
}
else
{
- path1 = svn_client_conflict_get_their_abspath(desc);
+ path1 = their_abspath;
label1 = _("THEIRS");
}
path2 = merged_file;
@@ -175,9 +180,9 @@ show_diff(const svn_wc_conflict_descript
{
/* There's no merged file, but we can show the
difference between mine and theirs. */
- path1 = svn_client_conflict_get_their_abspath(desc);
+ path1 = their_abspath;
label1 = _("THEIRS");
- path2 = svn_client_conflict_get_my_abspath(desc);
+ path2 = my_abspath;
label2 = _("MINE");
}
@@ -216,22 +221,22 @@ show_conflicts(const svn_wc_conflict_des
svn_diff_t *diff;
svn_stream_t *output;
svn_diff_file_options_t *options;
-
+ const char *base_abspath;
+ const char *my_abspath;
+ const char *their_abspath;
+
+ SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath,
+ &base_abspath, &their_abspath,
+ desc, pool, pool));
options = svn_diff_file_options_create(pool);
options->ignore_eol_style = TRUE;
SVN_ERR(svn_stream_for_stdout(&output, pool));
- SVN_ERR(svn_diff_file_diff3_2(&diff,
- svn_client_conflict_get_base_abspath(desc),
- svn_client_conflict_get_my_abspath(desc),
- svn_client_conflict_get_their_abspath(desc),
+ SVN_ERR(svn_diff_file_diff3_2(&diff, base_abspath, my_abspath, their_abspath,
options, pool));
/* ### Consider putting the markers/labels from
### svn_wc__merge_internal in the conflict description. */
return svn_diff_file_output_merge3(
- output, diff,
- svn_client_conflict_get_base_abspath(desc),
- svn_client_conflict_get_my_abspath(desc),
- svn_client_conflict_get_their_abspath(desc),
+ output, diff, base_abspath, my_abspath, their_abspath,
_("||||||| ORIGINAL"),
_("<<<<<<< MINE (select with 'mc')"),
_(">>>>>>> THEIRS (select with 'tc')"),
@@ -245,61 +250,49 @@ show_conflicts(const svn_wc_conflict_des
/* Perform a 3-way merge of the conflicting values of a property,
* and write the result to the OUTPUT stream.
*
- * If MERGED_ABSPATH is non-NULL, use it as 'my' version instead of
- * DESC->MY_ABSPATH.
+ * If MERGED_PROPVAL is non-NULL, use it as 'my' version instead of
+ * MY_ABSPATH.
*
* Assume the values are printable UTF-8 text.
*/
static svn_error_t *
merge_prop_conflict(svn_stream_t *output,
- const svn_wc_conflict_description2_t *desc,
- const char *merged_abspath,
+ const svn_string_t *base_propval,
+ const svn_string_t *my_propval,
+ const svn_string_t *their_propval,
+ const svn_string_t *merged_propval,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *pool)
{
- const char *base_abspath = svn_client_conflict_get_base_abspath(desc);
- const char *my_abspath = svn_client_conflict_get_my_abspath(desc);
- const char *their_abspath = svn_client_conflict_get_their_abspath(desc);
svn_diff_file_options_t *options = svn_diff_file_options_create(pool);
svn_diff_t *diff;
- /* If any of the property values is missing, use an empty file instead
+ /* If any of the property values is missing, use an empty value instead
* for the purpose of showing a diff. */
- if (! base_abspath || ! my_abspath || ! their_abspath)
- {
- const char *empty_file;
-
- SVN_ERR(svn_io_open_unique_file3(NULL, &empty_file,
- NULL, svn_io_file_del_on_pool_cleanup,
- pool, pool));
- if (! base_abspath)
- base_abspath = empty_file;
- if (! my_abspath)
- my_abspath = empty_file;
- if (! their_abspath)
- their_abspath = empty_file;
- }
-
+ if (base_propval == NULL)
+ base_propval = svn_string_create_empty(pool);
+ if (my_propval == NULL)
+ my_propval = svn_string_create_empty(pool);
+ if (my_propval == NULL)
+ my_propval = svn_string_create_empty(pool);
+
options->ignore_eol_style = TRUE;
- SVN_ERR(svn_diff_file_diff3_2(&diff,
- base_abspath,
- merged_abspath ? merged_abspath : my_abspath,
- their_abspath,
- options, pool));
- SVN_ERR(svn_diff_file_output_merge3(output, diff,
- base_abspath,
- merged_abspath ? merged_abspath
- : my_abspath,
- their_abspath,
- _("||||||| ORIGINAL"),
- _("<<<<<<< MINE"),
- _(">>>>>>> THEIRS"),
- "=======",
- svn_diff_conflict_display_modified_original_latest,
- cancel_func,
- cancel_baton,
- pool));
+ SVN_ERR(svn_diff_mem_string_diff3(&diff, base_propval,
+ merged_propval ?
+ merged_propval : my_propval,
+ their_propval, options, pool));
+ SVN_ERR(svn_diff_mem_string_output_merge3(
+ output, diff, base_propval,
+ merged_propval ? merged_propval : my_propval, their_propval,
+ _("||||||| ORIGINAL"),
+ _("<<<<<<< MINE"),
+ _(">>>>>>> THEIRS"),
+ "=======",
+ svn_diff_conflict_display_modified_original_latest,
+ cancel_func,
+ cancel_baton,
+ pool));
return SVN_NO_ERROR;
}
@@ -312,8 +305,10 @@ merge_prop_conflict(svn_stream_t *output
* Assume the values are printable UTF-8 text.
*/
static svn_error_t *
-show_prop_conflict(const svn_wc_conflict_description2_t *desc,
- const char *merged_abspath,
+show_prop_conflict(const svn_string_t *base_propval,
+ const svn_string_t *my_propval,
+ const svn_string_t *their_propval,
+ const svn_string_t *merged_propval,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *pool)
@@ -321,8 +316,8 @@ show_prop_conflict(const svn_wc_conflict
svn_stream_t *output;
SVN_ERR(svn_stream_for_stdout(&output, pool));
- SVN_ERR(merge_prop_conflict(output, desc, merged_abspath,
- cancel_func, cancel_baton, pool));
+ SVN_ERR(merge_prop_conflict(output, base_propval, my_propval, their_propval,
+ merged_propval, cancel_func, cancel_baton, pool));
return SVN_NO_ERROR;
}
@@ -371,12 +366,18 @@ open_editor(svn_boolean_t *performed_edi
return SVN_NO_ERROR;
}
-/* Run an external editor, passing it the 'merged' property in DESC.
+/* Run an external editor on the merged property value with conflict markers.
+ * Return the path to a file containing the edited result in *MERGED_FILE_PATH
+ * and also return the resulting property value in *MERGED_RPOPVAL.
+ * If the edit is aborted, set *MERGED_FILE_PATH and *MERGED_PROPVAL to NULL.
* The tool to use is determined by B->editor_cmd, B->config and
* environment variables; see svn_cl__edit_file_externally() for details. */
static svn_error_t *
edit_prop_conflict(const char **merged_file_path,
- const svn_wc_conflict_description2_t *desc,
+ const svn_string_t **merged_propval,
+ const svn_string_t *base_propval,
+ const svn_string_t *my_propval,
+ const svn_string_t *their_propval,
svn_cl__interactive_conflict_baton_t *b,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
@@ -391,14 +392,28 @@ edit_prop_conflict(const char **merged_f
result_pool, scratch_pool));
merged_prop = svn_stream_from_aprfile2(file, TRUE /* disown */,
scratch_pool);
- SVN_ERR(merge_prop_conflict(merged_prop, desc, NULL,
+ SVN_ERR(merge_prop_conflict(merged_prop, base_propval, my_propval,
+ their_propval, NULL,
b->pb->cancel_func,
b->pb->cancel_baton,
scratch_pool));
SVN_ERR(svn_stream_close(merged_prop));
SVN_ERR(svn_io_file_flush(file, scratch_pool));
SVN_ERR(open_editor(&performed_edit, file_path, b, scratch_pool));
- *merged_file_path = (performed_edit ? file_path : NULL);
+ if (performed_edit)
+ {
+ svn_stringbuf_t *buf;
+
+ *merged_file_path = file_path;
+
+ SVN_ERR(svn_stringbuf_from_file2(&buf, file_path, scratch_pool));
+ *merged_propval = svn_string_create_from_buf(buf, result_pool);
+ }
+ else
+ {
+ *merged_file_path = NULL;
+ *merged_propval = NULL;
+ }
return SVN_NO_ERROR;
}
@@ -716,14 +731,17 @@ handle_text_conflict(svn_wc_conflict_res
svn_boolean_t knows_something = FALSE;
const char *local_relpath;
const char *local_abspath = svn_client_conflict_get_local_abspath(desc);
- svn_boolean_t is_binary = svn_client_conflict_get_is_binary(desc);
- const char *base_abspath = svn_client_conflict_get_base_abspath(desc);
- const char *my_abspath = svn_client_conflict_get_my_abspath(desc);
- const char *their_abspath = svn_client_conflict_get_their_abspath(desc);
+ svn_boolean_t is_binary = svn_mime_type_is_binary(
+ svn_client_conflict_text_get_mime_type(desc));
+ const char *base_abspath;
+ const char *my_abspath;
+ const char *their_abspath;
const char *merged_file = svn_client_conflict_get_merged_file(desc);
- SVN_ERR_ASSERT(svn_client_conflict_get_kind(desc) ==
- svn_wc_conflict_kind_text);
+ SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath,
+ &base_abspath, &their_abspath,
+ desc, scratch_pool,
+ scratch_pool));
local_relpath = svn_cl__local_style_skip_ancestor(b->path_prefix,
local_abspath,
@@ -1036,21 +1054,20 @@ handle_prop_conflict(svn_wc_conflict_res
apr_pool_t *iterpool;
const char *message;
const char *merged_file_path = NULL;
+ const svn_string_t *merged_propval = NULL;
svn_boolean_t resolved_allowed = FALSE;
-
- /* ### Work around a historical bug in the provider: the path to the
- * conflict description file was put in the 'theirs' field, and
- * 'theirs' was put in the 'merged' field. */
- ((svn_wc_conflict_description2_t *)desc)->their_abspath = desc->merged_file;
- ((svn_wc_conflict_description2_t *)desc)->merged_file = NULL;
-
- SVN_ERR_ASSERT(svn_client_conflict_get_kind(desc) ==
- svn_wc_conflict_kind_property);
+ const svn_string_t *base_propval;
+ const svn_string_t *my_propval;
+ const svn_string_t *their_propval;
+
+ SVN_ERR(svn_client_conflict_prop_get_propvals(NULL, &my_propval,
+ &base_propval, &their_propval,
+ desc, scratch_pool));
SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool,
_("Conflict for property '%s' discovered"
" on '%s'.\n"),
- svn_client_conflict_get_property_name(desc),
+ svn_client_conflict_prop_get_propname(desc),
svn_cl__local_style_skip_ancestor(
b->path_prefix,
svn_client_conflict_get_local_abspath(desc),
@@ -1094,15 +1111,17 @@ handle_prop_conflict(svn_wc_conflict_res
}
else if (strcmp(opt->code, "dc") == 0)
{
- SVN_ERR(show_prop_conflict(desc, merged_file_path,
+ SVN_ERR(show_prop_conflict(base_propval, my_propval, their_propval,
+ merged_propval,
b->pb->cancel_func, b->pb->cancel_baton,
scratch_pool));
}
else if (strcmp(opt->code, "e") == 0)
{
- SVN_ERR(edit_prop_conflict(&merged_file_path, desc, b,
- result_pool, scratch_pool));
- resolved_allowed = (merged_file_path != NULL);
+ SVN_ERR(edit_prop_conflict(&merged_file_path, &merged_propval,
+ base_propval, my_propval, their_propval,
+ b, result_pool, scratch_pool));
+ resolved_allowed = (merged_propval != NULL);
}
else if (strcmp(opt->code, "r") == 0)
{
@@ -1142,6 +1161,10 @@ handle_tree_conflict(svn_wc_conflict_res
const char *readable_desc;
const char *src_left_version;
const char *src_right_version;
+ const char *repos_root_url;
+ const char *repos_relpath;
+ svn_revnum_t peg_rev;
+ svn_node_kind_t node_kind;
apr_pool_t *iterpool;
SVN_ERR(svn_cl__get_human_readable_tree_conflict_description(
@@ -1153,19 +1176,30 @@ handle_tree_conflict(svn_wc_conflict_res
svn_client_conflict_get_local_abspath(desc), scratch_pool),
readable_desc));
+ SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL,
+ desc, scratch_pool, scratch_pool));
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(&repos_relpath,
+ &peg_rev,
+ &node_kind,
+ desc,
+ scratch_pool,
+ scratch_pool));
src_left_version =
- svn_cl__node_description(
- svn_client_conflict_get_src_left_version(desc),
- svn_client_conflict_get_src_left_version(desc)->repos_url,
- scratch_pool);
+ svn_cl__node_description(repos_root_url, repos_relpath, peg_rev,
+ node_kind, repos_root_url, scratch_pool);
if (src_left_version)
SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool, "%s: %s\n",
_("Source left"), src_left_version));
+
+ SVN_ERR(svn_client_conflict_get_incoming_new_repos_location(&repos_relpath,
+ &peg_rev,
+ &node_kind,
+ desc,
+ scratch_pool,
+ scratch_pool));
src_right_version =
- svn_cl__node_description(
- svn_client_conflict_get_src_right_version(desc),
- svn_client_conflict_get_src_right_version(desc)->repos_url,
- scratch_pool);
+ svn_cl__node_description(repos_root_url, repos_relpath, peg_rev,
+ node_kind, repos_root_url, scratch_pool);
if (src_right_version)
SVN_ERR(svn_cmdline_fprintf(stderr, scratch_pool, "%s: %s\n",
_("Source right"), src_right_version));
@@ -1195,7 +1229,8 @@ handle_tree_conflict(svn_wc_conflict_res
{
if (svn_client_conflict_get_incoming_change(desc) ==
svn_wc_conflict_action_edit &&
- svn_client_conflict_get_node_kind(desc) == svn_node_dir)
+ svn_client_conflict_tree_get_victim_node_kind(desc) ==
+ svn_node_dir)
tc_opts = tree_conflict_options_update_edit_deleted_dir;
}
}
@@ -1232,11 +1267,18 @@ conflict_func_interactive(svn_wc_conflic
{
svn_cl__interactive_conflict_baton_t *b = baton;
svn_error_t *err;
- const char *base_abspath = svn_client_conflict_get_base_abspath(desc);
- const char *my_abspath = svn_client_conflict_get_my_abspath(desc);
- const char *their_abspath = svn_client_conflict_get_their_abspath(desc);
+ const char *base_abspath = NULL;
+ const char *my_abspath = NULL;
+ const char *their_abspath = NULL;
const char *merged_file = svn_client_conflict_get_merged_file(desc);
+ if (svn_client_conflict_get_kind(desc) == svn_wc_conflict_kind_text)
+ SVN_ERR(svn_client_conflict_text_get_contents(NULL, &my_abspath,
+ &base_abspath,
+ &their_abspath,
+ desc, scratch_pool,
+ scratch_pool));
+
/* Start out assuming we're going to postpone the conflict. */
*result = svn_wc_create_conflict_result(svn_wc_conflict_choose_postpone,
NULL, result_pool);
Modified: subversion/branches/fsx-1.10/subversion/svn/info-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/svn/info-cmd.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/svn/info-cmd.c (original)
+++ subversion/branches/fsx-1.10/subversion/svn/info-cmd.c Thu Jun 25 08:00:57 2015
@@ -581,8 +581,8 @@ print_info(void *baton,
if (info->wc_info->conflicts)
{
- svn_boolean_t printed_prop_conflict_file = FALSE;
svn_boolean_t printed_tc = FALSE;
+ svn_stringbuf_t *conflicted_props = NULL;
int i;
for (i = 0; i < info->wc_info->conflicts->nelts; i++)
@@ -591,17 +591,18 @@ print_info(void *baton,
APR_ARRAY_IDX(info->wc_info->conflicts, i,
const svn_wc_conflict_description2_t *);
const char *desc;
- const char *base_abspath;
- const char *my_abspath;
- const char *their_abspath;
-
- base_abspath = svn_client_conflict_get_base_abspath(conflict);
- my_abspath = svn_client_conflict_get_my_abspath(conflict);
- their_abspath = svn_client_conflict_get_their_abspath(conflict);
+ const char *base_abspath = NULL;
+ const char *my_abspath = NULL;
+ const char *their_abspath = NULL;
switch (svn_client_conflict_get_kind(conflict))
{
case svn_wc_conflict_kind_text:
+
+ SVN_ERR(svn_client_conflict_text_get_contents(
+ NULL, &my_abspath, &base_abspath, &their_abspath,
+ conflict, pool, pool));
+
if (base_abspath)
SVN_ERR(svn_cmdline_printf(pool,
_("Conflict Previous Base File: %s\n"),
@@ -628,15 +629,18 @@ print_info(void *baton,
break;
case svn_wc_conflict_kind_property:
- if (! printed_prop_conflict_file)
- SVN_ERR(svn_cmdline_printf(pool,
- _("Conflict Properties File: %s\n"),
- svn_cl__local_style_skip_ancestor(
- receiver_baton->path_prefix,
- svn_client_conflict_get_prop_reject_abspath(
- conflict),
- pool)));
- printed_prop_conflict_file = TRUE;
+ {
+ const char *name;
+
+ name = svn_client_conflict_prop_get_propname(conflict);
+ if (conflicted_props == NULL)
+ conflicted_props = svn_stringbuf_create(name, pool);
+ else
+ {
+ svn_stringbuf_appendbyte(conflicted_props, ' ');
+ svn_stringbuf_appendcstr(conflicted_props, name);
+ }
+ }
break;
case svn_wc_conflict_kind_tree:
@@ -651,6 +655,10 @@ print_info(void *baton,
}
}
+ if (conflicted_props)
+ SVN_ERR(svn_cmdline_printf(pool, _("Conflicted Properties: %s\n"),
+ conflicted_props->data));
+
/* We only store one left and right version for all conflicts, which is
referenced from all conflicts.
Print it after the conflicts to match the 1.6/1.7 output where it is
@@ -658,6 +666,10 @@ print_info(void *baton,
{
const char *src_left_version;
const char *src_right_version;
+ const char *repos_root_url;
+ const char *repos_relpath;
+ svn_revnum_t peg_rev;
+ svn_node_kind_t node_kind;
const svn_wc_conflict_description2_t *conflict =
APR_ARRAY_IDX(info->wc_info->conflicts, 0,
const svn_wc_conflict_description2_t *);
@@ -669,21 +681,28 @@ print_info(void *baton,
SVN_ERR(svn_cl__get_human_readable_action_description(&desc,
svn_wc_conflict_action_edit,
svn_client_conflict_get_operation(conflict),
- svn_client_conflict_get_node_kind(conflict), pool));
+ info->kind,
+ pool));
SVN_ERR(svn_cmdline_printf(pool, "%s: %s\n",
_("Conflict Details"), desc));
}
+ SVN_ERR(svn_client_conflict_get_repos_info(&repos_root_url, NULL,
+ conflict, pool, pool));
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
+ &repos_relpath, &peg_rev, &node_kind, conflict,
+ pool, pool));
src_left_version =
- svn_cl__node_description(
- svn_client_conflict_get_src_left_version(conflict),
- info->repos_root_URL, pool);
+ svn_cl__node_description(repos_root_url, repos_relpath,
+ peg_rev, node_kind, info->repos_root_URL, pool);
+ SVN_ERR(svn_client_conflict_get_incoming_new_repos_location(
+ &repos_relpath, &peg_rev, &node_kind, conflict,
+ pool, pool));
src_right_version =
- svn_cl__node_description(
- svn_client_conflict_get_src_right_version(conflict),
- info->repos_root_URL, pool);
+ svn_cl__node_description(repos_root_url, repos_relpath,
+ peg_rev, node_kind, info->repos_root_URL, pool);
if (src_left_version)
SVN_ERR(svn_cmdline_printf(pool, " %s: %s\n",
Modified: subversion/branches/fsx-1.10/subversion/svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/svn/util.c?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/svn/util.c (original)
+++ subversion/branches/fsx-1.10/subversion/svn/util.c Thu Jun 25 08:00:57 2015
@@ -907,14 +907,17 @@ svn_cl__time_cstring_to_human_cstring(co
}
const char *
-svn_cl__node_description(const svn_wc_conflict_version_t *node,
+svn_cl__node_description(const char *repos_root_url,
+ const char *repos_relpath,
+ svn_revnum_t peg_rev,
+ svn_node_kind_t node_kind,
const char *wc_repos_root_URL,
apr_pool_t *pool)
{
const char *root_str = "^";
const char *path_str = "...";
- if (!node)
+ if (!repos_root_url || !repos_relpath || !SVN_IS_VALID_REVNUM(peg_rev))
/* Printing "(none)" the harder way to ensure conformity (mostly with
* translations). */
return apr_psprintf(pool, "(%s)",
@@ -923,18 +926,18 @@ svn_cl__node_description(const svn_wc_co
/* Construct a "caret notation" ^/URL if NODE matches WC_REPOS_ROOT_URL.
* Otherwise show the complete URL, and if we can't, show dots. */
- if (node->repos_url &&
+ if (repos_root_url &&
(wc_repos_root_URL == NULL ||
- strcmp(node->repos_url, wc_repos_root_URL) != 0))
- root_str = node->repos_url;
+ strcmp(repos_root_url, wc_repos_root_URL) != 0))
+ root_str = repos_root_url;
- if (node->path_in_repos)
- path_str = node->path_in_repos;
+ if (repos_relpath)
+ path_str = repos_relpath;
return apr_psprintf(pool, "(%s) %s@%ld",
- svn_cl__node_kind_str_human_readable(node->node_kind),
+ svn_cl__node_kind_str_human_readable(node_kind),
svn_path_url_add_component2(root_str, path_str, pool),
- node->peg_rev);
+ peg_rev);
}
svn_error_t *
Modified: subversion/branches/fsx-1.10/subversion/tests/cmdline/merge_tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1687422&r1=1687421&r2=1687422&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/cmdline/merge_tree_conflict_tests.py (original)
+++ subversion/branches/fsx-1.10/subversion/tests/cmdline/merge_tree_conflict_tests.py Thu Jun 25 08:00:57 2015
@@ -2012,9 +2012,7 @@ def merge_conflict_details(sbox):
expected_info = [
{
"Path" : re.escape(sbox.ospath('B')),
-
- "Conflict Properties File" :
- re.escape(sbox.ospath('B/dir_conflicts.prej')) + '.*',
+ "Conflicted Properties" : "key",
"Conflict Details": re.escape(
'incoming dir edit upon merge' +
' Source left: (dir) ^/A/B@1' +
@@ -2124,18 +2122,16 @@ def merge_obstruction_recording(sbox):
})
expected_mergeinfo_output = wc.State(wc_dir, {
'' : Item(status=' U'),
- 'dir' : Item(status=' U'), # Because dir already exists
})
expected_elision_output = wc.State(wc_dir, {
})
expected_disk = wc.State('', {
'dir/file.txt' : Item(contents="The file on branch\n"),
- 'dir' : Item(props={'svn:mergeinfo':''}),
'.' : Item(props={'svn:mergeinfo':'/trunk:2-4'}),
})
expected_status = wc.State(wc_dir, {
'' : Item(status=' M', wc_rev='4'),
- 'dir' : Item(status=' M', treeconflict='C', wc_rev='4'),
+ 'dir' : Item(status=' ', treeconflict='C', wc_rev='4'),
'dir/file.txt' : Item(status=' ', wc_rev='4'),
})
expected_skip = wc.State('', {
@@ -2172,7 +2168,7 @@ def merge_obstruction_recording(sbox):
expected_output = [
'--- Recording mergeinfo for merge of r4 into \'%s\':\n' % \
sbox.ospath('dir'),
- ' G %s\n' % sbox.ospath('dir'),
+ ' U %s\n' % sbox.ospath('dir'),
]
# ### Why are r1-r3 not recorded?
# ### Guess: Because dir's history only exists since r4.