You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pr...@apache.org on 2013/04/08 13:47:04 UTC
svn commit: r1465596 [2/5] - in /subversion/branches/verify-keep-going: ./
contrib/server-side/svncutter/ subversion/bindings/cxxhl/include/
subversion/bindings/cxxhl/include/svncxxhl/ subversion/bindings/cxxhl/src/
subversion/bindings/cxxhl/tests/ sub...
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/copy_foreign.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/copy_foreign.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/copy_foreign.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/copy_foreign.c Mon Apr 8 11:47:02 2013
@@ -428,10 +428,10 @@ copy_foreign_dir(svn_ra_session_t *ra_se
&wrapped_editor, &wrapped_baton,
scratch_pool));
- SVN_ERR(svn_ra_do_update2(ra_session, &reporter, &reporter_baton,
+ SVN_ERR(svn_ra_do_update3(ra_session, &reporter, &reporter_baton,
location->rev, "", svn_depth_infinity,
- FALSE, wrapped_editor, wrapped_baton,
- scratch_pool));
+ FALSE, FALSE, wrapped_editor, wrapped_baton,
+ scratch_pool, scratch_pool));
SVN_ERR(reporter->set_path(reporter_baton, "", location->rev, depth,
TRUE /* incomplete */,
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/delete.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/delete.c Mon Apr 8 11:47:02 2013
@@ -99,26 +99,23 @@ find_undeletables(void *baton,
return SVN_NO_ERROR;
}
-/* Verify that the path can be deleted without losing stuff,
- i.e. ensure that there are no modified or unversioned resources
- under PATH. This is similar to checking the output of the status
- command. CTX is used for the client's config options. POOL is
- used for all temporary allocations. */
+/* Check whether LOCAL_ABSPATH is an external and raise an error if it is.
+
+ A file external should not be deleted since the file external is
+ implemented as a switched file and it would delete the file the
+ file external is switched to, which is not the behavior the user
+ would probably want.
+
+ A directory external should not be deleted since it is the root
+ of a different working copy. */
static svn_error_t *
-can_delete_node(svn_boolean_t *target_missing,
- const char *local_abspath,
- svn_client_ctx_t *ctx,
- apr_pool_t *scratch_pool)
+check_external(const char *local_abspath,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool)
{
svn_node_kind_t external_kind;
const char *defining_abspath;
- apr_array_header_t *ignores;
- struct can_delete_baton_t cdt;
- /* A file external should not be deleted since the file external is
- implemented as a switched file and it would delete the file the
- file external is switched to, which is not the behavior the user
- would probably want. */
SVN_ERR(svn_wc__read_external_info(&external_kind, &defining_abspath, NULL,
NULL, NULL,
ctx->wc_ctx, local_abspath,
@@ -135,6 +132,22 @@ can_delete_node(svn_boolean_t *target_mi
svn_dirent_local_style(defining_abspath,
scratch_pool));
+ return SVN_NO_ERROR;
+}
+
+/* Verify that the path can be deleted without losing stuff,
+ i.e. ensure that there are no modified or unversioned resources
+ under PATH. This is similar to checking the output of the status
+ command. CTX is used for the client's config options. POOL is
+ used for all temporary allocations. */
+static svn_error_t *
+can_delete_node(svn_boolean_t *target_missing,
+ const char *local_abspath,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool)
+{
+ apr_array_header_t *ignores;
+ struct can_delete_baton_t cdt;
/* Use an infinite-depth status check to see if there's anything in
or under PATH which would make it unsafe for deletion. The
@@ -409,6 +422,8 @@ svn_client__wc_delete(const char *local_
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
+ SVN_ERR(check_external(local_abspath, ctx, pool));
+
if (!force && !keep_local)
/* Verify that there are no "awkward" files */
SVN_ERR(can_delete_node(&target_missing, local_abspath, ctx, pool));
@@ -444,6 +459,8 @@ svn_client__wc_delete_many(const apr_arr
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
+ SVN_ERR(check_external(local_abspath, ctx, pool));
+
if (!force && !keep_local)
{
svn_boolean_t missing;
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/export.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/export.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/export.c Mon Apr 8 11:47:02 2013
@@ -1306,13 +1306,15 @@ export_directory(const char *from_path_o
scratch_pool, scratch_pool));
/* Manufacture a basic 'report' to the update reporter. */
- SVN_ERR(svn_ra_do_update2(ra_session,
+ SVN_ERR(svn_ra_do_update3(ra_session,
&reporter, &report_baton,
loc->rev,
"", /* no sub-target */
depth,
FALSE, /* don't want copyfrom-args */
- export_editor, edit_baton, scratch_pool));
+ FALSE, /* don't want ignore_ancestry */
+ export_editor, edit_baton,
+ scratch_pool, scratch_pool));
SVN_ERR(reporter->set_path(report_baton, "", loc->rev,
/* Depth is irrelevant, as we're
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/merge.c Mon Apr 8 11:47:02 2013
@@ -11885,14 +11885,6 @@ typedef struct source_and_target_t
svn_ra_session_t *target_ra_session;
branch_history_t target_branch;
- /* The complete mergeinfo on SOURCE.
- That is, the explicit or inherited mergeinfo. */
- svn_mergeinfo_t source_mergeinfo;
-
- /* The complete mergeinfo on (the current, working version of) TARGET.
- That is, the explicit or inherited mergeinfo. */
- svn_mergeinfo_t target_mergeinfo;
-
/* Repos location of the youngest common ancestor of SOURCE and TARGET. */
svn_client__pathrev_t *yca;
} source_and_target_t;
@@ -11968,17 +11960,85 @@ branch_history_get_endpoints(svn_client_
return SVN_NO_ERROR;
}
+/* Implements the svn_log_entry_receiver_t interface.
+
+ Set *BATON to LOG_ENTRY->revision and return SVN_ERR_CEASE_INVOCATION. */
+static svn_error_t *
+operative_rev_receiver(void *baton,
+ svn_log_entry_t *log_entry,
+ apr_pool_t *pool)
+{
+ svn_revnum_t *operative_rev = baton;
+
+ *operative_rev = log_entry->revision;
+
+ /* We've found the youngest merged or oldest eligible revision, so
+ we're done. */
+ return svn_error_create(SVN_ERR_CEASE_INVOCATION, NULL, NULL);
+}
+
+/* Wrapper around svn_client_mergeinfo_log2. All arguments are as per
+ that API. The discover_changed_paths, depth, and revprops args to
+ svn_client_mergeinfo_log2 are always TRUE, svn_depth_infinity_t,
+ and NULL respectively.
+
+ If RECEIVER raises a SVN_ERR_CEASE_INVOCATION error, but still sets
+ *REVISION to a valid revnum, then clear the error. Otherwise return
+ any error. */
+static svn_error_t*
+short_circuit_mergeinfo_log(svn_boolean_t finding_merged,
+ const char *target_path_or_url,
+ const svn_opt_revision_t *target_peg_revision,
+ const char *source_path_or_url,
+ const svn_opt_revision_t *source_peg_revision,
+ const svn_opt_revision_t *source_start_revision,
+ const svn_opt_revision_t *source_end_revision,
+ svn_log_entry_receiver_t receiver,
+ svn_revnum_t *revision,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool)
+{
+ svn_error_t *err = svn_client_mergeinfo_log2(finding_merged,
+ target_path_or_url,
+ target_peg_revision,
+ source_path_or_url,
+ source_peg_revision,
+ source_start_revision,
+ source_end_revision,
+ receiver, revision,
+ TRUE, svn_depth_infinity,
+ NULL, ctx, scratch_pool);
+
+ if (err)
+ {
+ /* We expect RECEIVER to short-circuit the (potentially expensive) log
+ by raising an SVN_ERR_CEASE_INVOCATION -- see operative_rev_receiver.
+ So we can ignore that error, but only as long as we actually found a
+ valid revision. */
+ if (SVN_IS_VALID_REVNUM(*revision)
+ && err->apr_err == SVN_ERR_CEASE_INVOCATION)
+ {
+ svn_error_clear(err);
+ err = NULL;
+ }
+ else
+ {
+ return svn_error_trace(err);
+ }
+ }
+ return SVN_NO_ERROR;
+}
+
/* Set *BASE_P to the last location on SOURCE_BRANCH such that all changes
* on SOURCE_BRANCH after YCA up to and including *BASE_P have already
- * been merged into the target branch -- or, specifically, are recorded in
- * TARGET_MERGEINFO.
+ * been fully merged into TARGET.
*
* *BASE_P TIP
* o-------o-----------o--- SOURCE_BRANCH
* / \
* -----o prev. \
* YCA \ merges \
- * o-----------o-----------
+ * o-----------o----------- TARGET branch
*
* In terms of mergeinfo:
*
@@ -11988,7 +12048,10 @@ branch_history_get_endpoints(svn_client_
*
* Eligible -.eee.eeeeeeeeeeeeeeeeeeee .=not a source branch location
*
- * Tgt-mi -.mmm.mm-mm-------m------- m=merged, -=not merged
+ * Tgt-mi -.mmm.mm-mm-------m------- m=merged to root of TARGET or
+ * subtree of TARGET with no
+ * operative changes outside of that
+ * subtree, -=not merged
*
* Eligible -.---.--e--eeeeeee-eeeeeee
*
@@ -11999,90 +12062,84 @@ branch_history_get_endpoints(svn_client_
* YCA \ merges \
* o-----------o-------------
*
- * If no locations on SOURCE_BRANCH are recorded in TARGET_MERGEINFO, set
- * *BASE_P to the YCA.
+ * If no revisions from SOURCE_BRANCH have been completely merged to TARGET,
+ * then set *BASE_P to the YCA.
*/
static svn_error_t *
find_last_merged_location(svn_client__pathrev_t **base_p,
svn_client__pathrev_t *yca,
const branch_history_t *source_branch,
- svn_mergeinfo_t target_mergeinfo,
+ svn_client__pathrev_t *target,
svn_client_ctx_t *ctx,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
- /*
- To find the youngest location on BRANCH_A that is fully merged to BRANCH_B:
-
- Find the longest set of locations in BRANCH_A, starting after YCA,
- such that each location is (any of):
- (a) in BRANCH_B's mergeinfo; or
- (b) a merge onto BRANCH_A of logical changes that are all from the
- target branch or already in BRANCH_B's mergeinfo; or
- (c) inoperative on BRANCH_A.
-
- Report the youngest such location, or the YCA if there are none.
-
- Part (b) can perhaps, initially, be simplified to something like:
- a merge onto BRANCH_A of (including? entirely?) revisions from
- BRANCH_B's history.
-
- Part (c) is only necessary if we want to allow sparse mergeinfo --
- that is, if we don't want to do some partially- or completely-
- inoperative merges to fill in mergeinfo gaps.
- */
- branch_history_t *eligible_locations;
+ svn_opt_revision_t source_peg_rev, source_start_rev, source_end_rev,
+ target_opt_rev;
+ svn_revnum_t youngest_merged_rev = SVN_INVALID_REVNUM;
+
+ source_peg_rev.kind = svn_opt_revision_number;
+ source_peg_rev.value.number = source_branch->tip->rev;
+ source_start_rev.kind = svn_opt_revision_number;
+ source_start_rev.value.number = yca->rev;
+ source_end_rev.kind = svn_opt_revision_number;
+ source_end_rev.value.number = source_branch->tip->rev;
+ target_opt_rev.kind = svn_opt_revision_number;
+ target_opt_rev.value.number = target->rev;
+
+ /* Find the youngest revision fully merged from SOURCE_BRANCH to TARGET,
+ if such a revision exists. */
+ SVN_ERR(short_circuit_mergeinfo_log(TRUE, /* Find merged */
+ target->url, &target_opt_rev,
+ source_branch->tip->url,
+ &source_peg_rev,
+ &source_end_rev, &source_start_rev,
+ operative_rev_receiver,
+ &youngest_merged_rev,
+ ctx, scratch_pool));
- /* Start with a list of all source locations after YCA up to the tip. */
- SVN_ERR(branch_history_intersect_range(
- &eligible_locations,
- source_branch, yca->rev + 1, source_branch->tip->rev,
- scratch_pool, scratch_pool));
-
- /* Remove any locations that match (a), (b) or (c). */
- /* For (a), remove any locations that are in TARGET's mergeinfo. */
- SVN_ERR(svn_mergeinfo_remove2(&eligible_locations->history,
- target_mergeinfo, eligible_locations->history,
- TRUE, scratch_pool, scratch_pool));
- /* For (b) ... */
-
- /* For (c) ... */
-
- /* This leaves a list of source locations that are eligible to merge.
- The location that we want is the source location just before oldest
- eligible location remaining in this list; or the youngest source
- location if there are none left in this list. */
- if (apr_hash_count(eligible_locations->history) > 0)
+ if (!SVN_IS_VALID_REVNUM(youngest_merged_rev))
{
- /* Find the oldest eligible rev.
- * Eligible -.---.--e--eeeeeee-eeeeeee
- * ^
- * BASE is just before here.
- */
-
- svn_client__pathrev_t *oldest_eligible;
+ /* No revisions have been completely merged from SOURCE_BRANCH to
+ TARGET so the base for the next merge is the YCA. */
+ *base_p = yca;
+ }
+ else
+ {
+ /* One or more revisions have already been completely merged from
+ SOURCE_BRANCH to TARGET, now find the oldest revision which is
+ still eligible to be merged, if such exists. */
branch_history_t *contiguous_source;
+ svn_revnum_t base_rev;
+ svn_revnum_t oldest_eligible_rev = SVN_INVALID_REVNUM;
- SVN_ERR(branch_history_get_endpoints(
- &oldest_eligible, NULL,
- eligible_locations, scratch_pool, scratch_pool));
+ SVN_ERR(short_circuit_mergeinfo_log(FALSE, /* Find eligible */
+ target->url, &target_opt_rev,
+ source_branch->tip->url,
+ &source_peg_rev,
+ &source_start_rev, &source_end_rev,
+ operative_rev_receiver,
+ &oldest_eligible_rev,
+ ctx, scratch_pool));
+
+ /* If there are revisions eligible for merging, use the oldest one
+ to calculate the base. Otherwise there are no operative revisions
+ to merge and we can simple set the base to the youngest revision
+ already merged. */
+ if (SVN_IS_VALID_REVNUM(oldest_eligible_rev))
+ base_rev = oldest_eligible_rev - 1;
+ else
+ base_rev = youngest_merged_rev;
/* Find the branch location just before the oldest eligible rev.
- * (We can't just subtract 1 from the rev because the branch might
- * have a gap there.) */
- SVN_ERR(branch_history_intersect_range(
- &contiguous_source,
- source_branch, yca->rev, oldest_eligible->rev - 1,
- scratch_pool, scratch_pool));
- SVN_ERR(branch_history_get_endpoints(
- NULL, base_p,
- contiguous_source, result_pool, scratch_pool));
- }
- else
- {
- /* The whole source branch is merged already, so the base for
- * the next merge is its tip. */
- *base_p = source_branch->tip;
+ (We can't just use the base revs calculated above because the branch
+ might have a gap there.) */
+ SVN_ERR(branch_history_intersect_range(&contiguous_source,
+ source_branch, yca->rev,
+ base_rev,
+ scratch_pool, scratch_pool));
+ SVN_ERR(branch_history_get_endpoints(NULL, base_p, contiguous_source,
+ result_pool, scratch_pool));
}
return SVN_NO_ERROR;
@@ -12100,10 +12157,10 @@ find_last_merged_location(svn_client__pa
* S_T->target
*
* Set *BASE_P to BASE, the youngest location in the history of S_T->source
- * (at or after the YCA) at which all revisions up to BASE are recorded as
+ * (at or after the YCA) at which all revisions up to BASE are effectively
* merged into S_T->target.
*
- * If no locations on the history of S_T->source are recorded as merged to
+ * If no locations on the history of S_T->source are effectively merged to
* S_T->target, set *BASE_P to the YCA.
*/
static svn_error_t *
@@ -12116,7 +12173,7 @@ find_base_on_source(svn_client__pathrev_
SVN_ERR(find_last_merged_location(base_p,
s_t->yca,
&s_t->source_branch,
- s_t->target_mergeinfo,
+ s_t->target_branch.tip,
ctx, result_pool, scratch_pool));
return SVN_NO_ERROR;
}
@@ -12133,10 +12190,10 @@ find_base_on_source(svn_client__pathrev_
* BASE S_T->target
*
* Set *BASE_P to BASE, the youngest location in the history of S_T->target
- * (at or after the YCA) at which all revisions up to BASE are recorded as
+ * (at or after the YCA) at which all revisions up to BASE are effectively
* merged into S_T->source.
*
- * If no locations on the history of S_T->target are recorded as merged to
+ * If no locations on the history of S_T->target are effectively merged to
* S_T->source, set *BASE_P to the YCA.
*/
static svn_error_t *
@@ -12149,7 +12206,7 @@ find_base_on_target(svn_client__pathrev_
SVN_ERR(find_last_merged_location(base_p,
s_t->yca,
&s_t->target_branch,
- s_t->source_mergeinfo,
+ s_t->source,
ctx, result_pool, scratch_pool));
return SVN_NO_ERROR;
@@ -12167,32 +12224,6 @@ find_automatic_merge(svn_client__pathrev
{
svn_client__pathrev_t *base_on_source, *base_on_target;
- /* Fetch mergeinfo of source branch (tip) and target branch (working). */
- SVN_ERR(svn_client__get_repos_mergeinfo(&s_t->source_mergeinfo,
- s_t->source_ra_session,
- s_t->source->url,
- s_t->source->rev,
- svn_mergeinfo_inherited,
- FALSE /* squelch_incapable */,
- scratch_pool));
- if (! s_t->target->abspath)
- SVN_ERR(svn_client__get_repos_mergeinfo(&s_t->target_mergeinfo,
- s_t->target_ra_session,
- s_t->target->loc.url,
- s_t->target->loc.rev,
- svn_mergeinfo_inherited,
- FALSE /* squelch_incapable */,
- scratch_pool));
- else
- SVN_ERR(svn_client__get_wc_or_repos_mergeinfo(&s_t->target_mergeinfo,
- NULL /* inherited */,
- NULL /* from_repos */,
- FALSE /* repos_only */,
- svn_mergeinfo_inherited,
- s_t->target_ra_session,
- s_t->target->abspath,
- ctx, scratch_pool));
-
/* Get the location-history of each branch. */
s_t->source_branch.tip = s_t->source;
SVN_ERR(svn_client__get_history_as_mergeinfo(
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/revert.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/revert.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/revert.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/revert.c Mon Apr 8 11:47:02 2013
@@ -183,18 +183,17 @@ svn_client_revert2(const apr_array_heade
errorful:
- if (!use_commit_times)
- {
- /* Sleep to ensure timestamp integrity. */
- const char* sleep_path = NULL;
-
- /* Only specify a path if we are certain all paths are on the
- same filesystem */
- if (paths->nelts == 1)
- sleep_path = APR_ARRAY_IDX(paths, 0, const char *);
+ {
+ /* Sleep to ensure timestamp integrity. */
+ const char *sleep_path = NULL;
+
+ /* Only specify a path if we are certain all paths are on the
+ same filesystem */
+ if (paths->nelts == 1)
+ sleep_path = APR_ARRAY_IDX(paths, 0, const char *);
- svn_io_sleep_for_timestamps(sleep_path, subpool);
- }
+ svn_io_sleep_for_timestamps(sleep_path, subpool);
+ }
svn_pool_destroy(subpool);
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/switch.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/switch.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/switch.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/switch.c Mon Apr 8 11:47:02 2013
@@ -337,8 +337,7 @@ switch_internal(svn_revnum_t *result_rev
/* Past this point, we assume the WC is going to be modified so we will
* need to sleep for timestamps. */
- if (! use_commit_times)
- *timestamp_sleep = TRUE;
+ *timestamp_sleep = TRUE;
/* Drive the reporter structure, describing the revisions within
PATH. When we call reporter->finish_report, the update_editor
Modified: subversion/branches/verify-keep-going/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_client/update.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_client/update.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_client/update.c Mon Apr 8 11:47:02 2013
@@ -440,17 +440,18 @@ update_internal(svn_revnum_t *result_rev
/* Tell RA to do an update of URL+TARGET to REVISION; if we pass an
invalid revnum, that means RA will use the latest revision. */
- SVN_ERR(svn_ra_do_update2(ra_session, &reporter, &report_baton,
+ SVN_ERR(svn_ra_do_update3(ra_session, &reporter, &report_baton,
revnum, target,
(!server_supports_depth || depth_is_sticky
? depth
: svn_depth_unknown),
- FALSE, update_editor, update_edit_baton, pool));
+ FALSE /* send_copyfrom_args */,
+ FALSE /* ignore_ancestry */,
+ update_editor, update_edit_baton, pool, pool));
/* Past this point, we assume the WC is going to be modified so we will
* need to sleep for timestamps. */
- if (! use_commit_times)
- *timestamp_sleep = TRUE;
+ *timestamp_sleep = TRUE;
/* Drive the reporter structure, describing the revisions within
PATH. When we call reporter->finish_report, the
Modified: subversion/branches/verify-keep-going/subversion/libsvn_delta/path_driver.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_delta/path_driver.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_delta/path_driver.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_delta/path_driver.c Mon Apr 8 11:47:02 2013
@@ -96,7 +96,7 @@ pop_stack(apr_array_header_t *db_stack,
/* Close the most recent directory pushed to the stack. */
item = APR_ARRAY_IDX(db_stack, db_stack->nelts - 1, dir_stack_t *);
- (void) apr_array_pop(db_stack);
+ apr_array_pop(db_stack);
SVN_ERR(editor->close_directory(item->dir_baton, item->pool));
svn_pool_destroy(item->pool);
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.c Mon Apr 8 11:47:02 2013
@@ -1307,6 +1307,29 @@ svn_fs_youngest_rev(svn_revnum_t *younge
}
svn_error_t *
+svn_fs_info_format(int *fs_format,
+ svn_version_t **supports_version,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ return svn_error_trace(fs->vtable->info_format(fs_format, supports_version,
+ fs,
+ result_pool, scratch_pool));
+}
+
+svn_error_t *
+svn_fs_info_config_files(apr_array_header_t **files,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ return svn_error_trace(fs->vtable->info_config_files(files, fs,
+ result_pool,
+ scratch_pool));
+}
+
+svn_error_t *
svn_fs_deltify_revision(svn_fs_t *fs, svn_revnum_t revision, apr_pool_t *pool)
{
return svn_error_trace(fs->vtable->deltify(fs, revision, pool));
@@ -1590,3 +1613,24 @@ svn_fs_version(void)
{
SVN_VERSION_BODY;
}
+
+
+/** info **/
+svn_error_t *
+svn_fs_info(const svn_fs_info_t **info,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ SVN__NOT_IMPLEMENTED();
+}
+
+svn_fs_info_t *
+svn_fs_info_dup(const svn_fs_info_t *info,
+ apr_pool_t *result_pool)
+{
+ /* Not implemented. */
+ SVN_ERR_MALFUNCTION_NO_RETURN();
+ return NULL;
+}
+
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs/fs-loader.h Mon Apr 8 11:47:02 2013
@@ -212,6 +212,15 @@ typedef struct fs_vtable_t
svn_fs_get_locks_callback_t get_locks_func,
void *get_locks_baton,
apr_pool_t *pool);
+ svn_error_t *(*info_format)(int *fs_format,
+ svn_version_t **supports_version,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+ svn_error_t *(*info_config_files)(apr_array_header_t **files,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
svn_error_t *(*verify_root)(svn_fs_root_t *root,
apr_pool_t *pool);
svn_error_t *(*freeze)(svn_fs_t *fs,
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_base/fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_base/fs.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_base/fs.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_base/fs.c Mon Apr 8 11:47:02 2013
@@ -471,6 +471,59 @@ bdb_write_config(svn_fs_t *fs)
}
static svn_error_t *
+base_bdb_info_format(int *fs_format,
+ svn_version_t **supports_version,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ base_fs_data_t *bfd = fs->fsap_data;
+
+ *fs_format = bfd->format;
+ *supports_version = apr_palloc(result_pool, sizeof(svn_version_t));
+
+ (*supports_version)->major = SVN_VER_MAJOR;
+ (*supports_version)->minor = 0;
+ (*supports_version)->patch = 0;
+ (*supports_version)->tag = "";
+
+ switch (bfd->format)
+ {
+ case 1:
+ break;
+ case 2:
+ (*supports_version)->minor = 4;
+ break;
+ case 3:
+ (*supports_version)->minor = 5;
+ break;
+ case 4:
+ (*supports_version)->minor = 6;
+ break;
+#ifdef SVN_DEBUG
+# if SVN_FS_BASE__FORMAT_NUMBER != 4
+# error "Need to add a 'case' statement here"
+# endif
+#endif
+ }
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+base_bdb_info_config_files(apr_array_header_t **files,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ *files = apr_array_make(result_pool, 1, sizeof(const char *));
+ APR_ARRAY_PUSH(*files, const char *) = svn_dirent_join(fs->path,
+ BDB_CONFIG_FILE,
+ result_pool);
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
base_bdb_verify_root(svn_fs_root_t *root,
apr_pool_t *scratch_pool)
{
@@ -507,6 +560,8 @@ static fs_vtable_t fs_vtable = {
svn_fs_base__unlock,
svn_fs_base__get_lock,
svn_fs_base__get_locks,
+ base_bdb_info_format,
+ base_bdb_info_config_files,
base_bdb_verify_root,
base_bdb_freeze,
base_bdb_set_errcall,
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_base/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_base/tree.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_base/tree.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_base/tree.c Mon Apr 8 11:47:02 2013
@@ -3730,8 +3730,7 @@ txn_body_apply_textdelta(void *baton, tr
we're calculating both SHA1 and MD5 checksums somewhere in
reps-strings.c. Could we keep them both around somehow so this
check could be more comprehensive? */
- if (tb->base_checksum->kind == checksum->kind
- && !svn_checksum_match(tb->base_checksum, checksum))
+ if (!svn_checksum_match(tb->base_checksum, checksum))
return svn_checksum_mismatch_err(tb->base_checksum, checksum,
trail->pool,
_("Base checksum mismatch on '%s'"),
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs.c Mon Apr 8 11:47:02 2013
@@ -184,6 +184,8 @@ static fs_vtable_t fs_vtable = {
svn_fs_fs__unlock,
svn_fs_fs__get_lock,
svn_fs_fs__get_locks,
+ svn_fs_fs__info_format,
+ svn_fs_fs__info_config_files,
svn_fs_fs__verify_root,
fs_freeze,
fs_set_errcall
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/fs_fs.c Mon Apr 8 11:47:02 2013
@@ -49,6 +49,7 @@
#include "svn_mergeinfo.h"
#include "svn_config.h"
#include "svn_ctype.h"
+#include "svn_version.h"
#include "fs.h"
#include "tree.h"
@@ -11466,3 +11467,57 @@ svn_fs_fs__hotcopy(svn_fs_t *src_fs,
return SVN_NO_ERROR;
}
+
+svn_error_t *
+svn_fs_fs__info_format(int *fs_format,
+ svn_version_t **supports_version,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ fs_fs_data_t *ffd = fs->fsap_data;
+ *fs_format = ffd->format;
+ *supports_version = apr_palloc(result_pool, sizeof(svn_version_t));
+
+ (*supports_version)->major = SVN_VER_MAJOR;
+ (*supports_version)->minor = 1;
+ (*supports_version)->patch = 0;
+ (*supports_version)->tag = "";
+
+ switch (ffd->format)
+ {
+ case 1:
+ break;
+ case 2:
+ (*supports_version)->minor = 4;
+ break;
+ case 3:
+ (*supports_version)->minor = 5;
+ break;
+ case 4:
+ (*supports_version)->minor = 6;
+ break;
+ case 6:
+ (*supports_version)->minor = 8;
+ break;
+#ifdef SVN_DEBUG
+# if SVN_FS_FS__FORMAT_NUMBER != 6
+# error "Need to add a 'case' statement here"
+# endif
+#endif
+ }
+
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_fs_fs__info_config_files(apr_array_header_t **files,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ *files = apr_array_make(result_pool, 1, sizeof(const char *));
+ APR_ARRAY_PUSH(*files, const char *) = svn_dirent_join(fs->path, PATH_CONFIG,
+ result_pool);
+ return SVN_NO_ERROR;
+}
Modified: subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/tree.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/tree.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/tree.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_fs_fs/tree.h Mon Apr 8 11:47:02 2013
@@ -91,6 +91,20 @@ svn_error_t *
svn_fs_fs__verify_root(svn_fs_root_t *root,
apr_pool_t *pool);
+svn_error_t *
+svn_fs_fs__info_format(int *fs_format,
+ svn_version_t **supports_version,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+
+svn_error_t *
+svn_fs_fs__info_config_files(apr_array_header_t **files,
+ svn_fs_t *fs,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.c Mon Apr 8 11:47:02 2013
@@ -349,6 +349,29 @@ svn_error_t *svn_ra_get_file_revs(svn_ra
handler2_baton, pool);
}
+svn_error_t *
+svn_ra_do_update2(svn_ra_session_t *session,
+ const svn_ra_reporter3_t **reporter,
+ void **report_baton,
+ svn_revnum_t revision_to_update_to,
+ const char *update_target,
+ svn_depth_t depth,
+ svn_boolean_t send_copyfrom_args,
+ const svn_delta_editor_t *update_editor,
+ void *update_baton,
+ apr_pool_t *pool)
+{
+ return svn_error_trace(
+ svn_ra_do_update3(session,
+ reporter, report_baton,
+ revision_to_update_to, update_target,
+ depth,
+ send_copyfrom_args,
+ FALSE /* ignore_ancestry */,
+ update_editor, update_baton,
+ pool, pool));
+}
+
svn_error_t *svn_ra_do_update(svn_ra_session_t *session,
const svn_ra_reporter2_t **reporter,
void **report_baton,
@@ -369,8 +392,9 @@ svn_error_t *svn_ra_do_update(svn_ra_ses
revision_to_update_to, update_target,
SVN_DEPTH_INFINITY_OR_FILES(recurse),
FALSE, /* no copyfrom args */
+ FALSE /* ignore_ancestry */,
update_editor, update_baton,
- pool);
+ pool, pool);
}
Propchange: subversion/branches/verify-keep-going/subversion/libsvn_ra/deprecated.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.c Mon Apr 8 11:47:02 2013
@@ -783,16 +783,19 @@ svn_error_t *svn_ra_get_mergeinfo(svn_ra
include_descendants, pool);
}
-svn_error_t *svn_ra_do_update2(svn_ra_session_t *session,
- const svn_ra_reporter3_t **reporter,
- void **report_baton,
- svn_revnum_t revision_to_update_to,
- const char *update_target,
- svn_depth_t depth,
- svn_boolean_t send_copyfrom_args,
- const svn_delta_editor_t *update_editor,
- void *update_baton,
- apr_pool_t *pool)
+svn_error_t *
+svn_ra_do_update3(svn_ra_session_t *session,
+ const svn_ra_reporter3_t **reporter,
+ void **report_baton,
+ svn_revnum_t revision_to_update_to,
+ const char *update_target,
+ svn_depth_t depth,
+ svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
+ const svn_delta_editor_t *update_editor,
+ void *update_baton,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
SVN_ERR_ASSERT(svn_path_is_empty(update_target)
|| svn_path_is_single_path_component(update_target));
@@ -800,8 +803,9 @@ svn_error_t *svn_ra_do_update2(svn_ra_se
reporter, report_baton,
revision_to_update_to, update_target,
depth, send_copyfrom_args,
+ ignore_ancestry,
update_editor, update_baton,
- pool);
+ result_pool, scratch_pool);
}
svn_error_t *
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra/ra_loader.h Mon Apr 8 11:47:02 2013
@@ -135,7 +135,7 @@ typedef struct svn_ra__vtable_t {
svn_mergeinfo_inheritance_t inherit,
svn_boolean_t include_merged_revisions,
apr_pool_t *pool);
- /* See svn_ra_do_update2(). */
+ /* See svn_ra_do_update3(). */
svn_error_t *(*do_update)(svn_ra_session_t *session,
const svn_ra_reporter3_t **reporter,
void **report_baton,
@@ -143,10 +143,12 @@ typedef struct svn_ra__vtable_t {
const char *update_target,
svn_depth_t depth,
svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
const svn_delta_editor_t *update_editor,
void *update_baton,
- apr_pool_t *pool);
- /* See svn_ra_do_switch2(). */
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+ /* See svn_ra_do_switch3(). */
svn_error_t *(*do_switch)(svn_ra_session_t *session,
const svn_ra_reporter3_t **reporter,
void **report_baton,
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra/wrapper_template.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra/wrapper_template.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra/wrapper_template.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra/wrapper_template.h Mon Apr 8 11:47:02 2013
@@ -291,8 +291,10 @@ static svn_error_t *compat_do_update(voi
SVN_ERR(VTBL.do_update(session_baton, &reporter3, &baton3,
revision_to_update_to, update_target, depth,
- FALSE, /* no copyfrom args */
- editor, update_baton, pool));
+ FALSE /* send_copyfrom_args */,
+ FALSE /* ignore_ancestry */,
+ editor, update_baton,
+ pool, pool));
compat_wrap_reporter(reporter, report_baton, reporter3, baton3, pool);
return SVN_NO_ERROR;
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_local/ra_plugin.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_local/ra_plugin.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_local/ra_plugin.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_local/ra_plugin.c Mon Apr 8 11:47:02 2013
@@ -71,10 +71,13 @@ cleanup_access(void *data)
}
-/* Fetch a username for use with SESS, and store it in SESS->username. */
+/* Fetch a username for use with SESSION, and store it in SESSION->username.
+ *
+ * Allocate the username in SESSION->pool. Use SCRATCH_POOL for temporary
+ * allocations. */
static svn_error_t *
get_username(svn_ra_session_t *session,
- apr_pool_t *pool)
+ apr_pool_t *scratch_pool)
{
svn_ra_local__session_baton_t *sess = session->priv;
@@ -93,7 +96,7 @@ get_username(svn_ra_session_t *session,
SVN_AUTH_CRED_USERNAME,
sess->uuid, /* realmstring */
sess->callbacks->auth_baton,
- pool));
+ scratch_pool));
/* No point in calling next_creds(), since that assumes that the
first_creds() somehow failed to authenticate. But there's no
@@ -104,7 +107,8 @@ get_username(svn_ra_session_t *session,
{
sess->username = apr_pstrdup(session->pool,
username_creds->username);
- svn_error_clear(svn_auth_save_credentials(iterstate, pool));
+ svn_error_clear(svn_auth_save_credentials(iterstate,
+ scratch_pool));
}
else
sess->username = "";
@@ -279,7 +283,9 @@ static const svn_ra_reporter3_t ra_local
* they have already wrapped with the same cancellation editor, so it ends
* up double-wrapped.
*
- * ... */
+ * Allocate @a *reporter and @a *report_baton in @a result_pool. Use
+ * @a scratch_pool for temporary allocations.
+ */
static svn_error_t *
make_reporter(svn_ra_session_t *session,
const svn_ra_reporter3_t **reporter,
@@ -293,7 +299,8 @@ make_reporter(svn_ra_session_t *session,
svn_boolean_t ignore_ancestry,
const svn_delta_editor_t *editor,
void *edit_baton,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
svn_ra_local__session_baton_t *sess = session->priv;
void *rbaton;
@@ -301,14 +308,14 @@ make_reporter(svn_ra_session_t *session,
/* Get the HEAD revision if one is not supplied. */
if (! SVN_IS_VALID_REVNUM(revision))
- SVN_ERR(svn_fs_youngest_rev(&revision, sess->fs, pool));
+ SVN_ERR(svn_fs_youngest_rev(&revision, sess->fs, scratch_pool));
/* If OTHER_URL was provided, validate it and convert it into a
regular filesystem path. */
if (other_url)
{
const char *other_relpath
- = svn_uri_skip_ancestor(sess->repos_url, other_url, pool);
+ = svn_uri_skip_ancestor(sess->repos_url, other_url, scratch_pool);
/* Sanity check: the other_url better be in the same repository as
the original session url! */
@@ -319,13 +326,14 @@ make_reporter(svn_ra_session_t *session,
"is not the same repository as\n"
"'%s'"), other_url, sess->repos_url);
- other_fs_path = apr_pstrcat(pool, "/", other_relpath, (char *)NULL);
+ other_fs_path = apr_pstrcat(scratch_pool, "/", other_relpath,
+ (char *)NULL);
}
/* Pass back our reporter */
*reporter = &ra_local_reporter;
- SVN_ERR(get_username(session, pool));
+ SVN_ERR(get_username(session, scratch_pool));
if (sess->callbacks)
SVN_ERR(svn_delta_get_cancellation_editor(sess->callbacks->cancel_func,
@@ -334,7 +342,7 @@ make_reporter(svn_ra_session_t *session,
edit_baton,
&editor,
&edit_baton,
- pool));
+ result_pool));
/* Build a reporter baton. */
SVN_ERR(svn_repos_begin_report3(&rbaton,
@@ -353,11 +361,11 @@ make_reporter(svn_ra_session_t *session,
NULL,
1024 * 1024, /* process-local transfers
should be fast */
- pool));
+ result_pool));
/* Wrap the report baton given us by the repos layer with our own
reporter baton. */
- *report_baton = make_reporter_baton(sess, rbaton, pool);
+ *report_baton = make_reporter_baton(sess, rbaton, result_pool);
return SVN_NO_ERROR;
}
@@ -810,9 +818,11 @@ svn_ra_local__do_update(svn_ra_session_t
const char *update_target,
svn_depth_t depth,
svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
const svn_delta_editor_t *update_editor,
void *update_baton,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
return make_reporter(session,
reporter,
@@ -823,10 +833,10 @@ svn_ra_local__do_update(svn_ra_session_t
TRUE,
depth,
send_copyfrom_args,
- FALSE,
+ ignore_ancestry,
update_editor,
update_baton,
- pool);
+ result_pool, scratch_pool);
}
@@ -857,7 +867,7 @@ svn_ra_local__do_switch(svn_ra_session_t
ignore_ancestry,
update_editor,
update_baton,
- result_pool);
+ result_pool, scratch_pool);
}
@@ -884,7 +894,7 @@ svn_ra_local__do_status(svn_ra_session_t
FALSE,
status_editor,
status_baton,
- pool);
+ pool, pool);
}
@@ -914,7 +924,7 @@ svn_ra_local__do_diff(svn_ra_session_t *
ignore_ancestry,
update_editor,
update_baton,
- pool);
+ pool, pool);
}
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_local/split_url.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_local/split_url.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_local/split_url.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_local/split_url.c Mon Apr 8 11:47:02 2013
@@ -73,7 +73,7 @@ svn_ra_local__split_URL(svn_repos_t **re
pool));
/* Configure hook script environment variables. */
- SVN_ERR(svn_repos_hooks_setenv(*repos, NULL, pool, pool));
+ SVN_ERR(svn_repos_hooks_setenv(*repos, NULL, pool));
return SVN_NO_ERROR;
}
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/ra_serf.h Mon Apr 8 11:47:02 2013
@@ -1529,9 +1529,11 @@ svn_ra_serf__do_update(svn_ra_session_t
const char *update_target,
svn_depth_t depth,
svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
const svn_delta_editor_t *update_editor,
void *update_baton,
- apr_pool_t *pool);
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
/* Implements svn_ra__vtable_t.do_switch(). */
svn_error_t *
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/sb_bucket.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/sb_bucket.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/sb_bucket.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/sb_bucket.c Mon Apr 8 11:47:02 2013
@@ -124,7 +124,8 @@ sb_bucket_readline(serf_bucket_t *bucket
const char **data, apr_size_t *len)
{
/* ### for now, we know callers won't use this function. */
- (void)svn_error__malfunction(TRUE, __FILE__, __LINE__, "Not implemented.");
+ svn_error_clear(svn_error__malfunction(TRUE, __FILE__, __LINE__,
+ "Not implemented."));
return APR_ENOTIMPL;
}
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/update.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/update.c Mon Apr 8 11:47:02 2013
@@ -2885,6 +2885,15 @@ finish_report(void *report_baton,
waittime_left = sess->timeout;
}
+ if (status && handler->sline.code != 200)
+ {
+ return svn_error_trace(
+ svn_error_compose_create(
+ svn_ra_serf__error_on_status(handler->sline.code,
+ handler->path,
+ handler->location),
+ err));
+ }
SVN_ERR(err);
if (status)
{
@@ -3092,8 +3101,13 @@ finish_report(void *report_baton,
err = report->update_editor->close_edit(report->update_baton, iterpool);
}
else
- err = svn_error_create(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL,
- _("Missing update-report close tag"));
+ {
+ /* Tell the editor that something failed */
+ err = report->update_editor->abort_edit(report->update_baton, iterpool);
+
+ err = svn_error_create(SVN_ERR_RA_DAV_MALFORMED_DATA, err,
+ _("Missing update-report close tag"));
+ }
svn_pool_destroy(iterpool);
return svn_error_trace(err);
@@ -3138,10 +3152,9 @@ make_update_reporter(svn_ra_session_t *r
svn_boolean_t send_copyfrom_args,
const svn_delta_editor_t *update_editor,
void *update_baton,
- apr_pool_t *result_pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
- /* ### would be nice to get a SCRATCH_POOL passed to us. */
- apr_pool_t *scratch_pool = svn_pool_create(result_pool);
report_context_t *report;
const svn_delta_editor_t *filter_editor;
void *filter_baton;
@@ -3322,7 +3335,6 @@ make_update_reporter(svn_ra_session_t *r
SVN_ERR(svn_io_file_write_full(report->body_file, buf->data, buf->len,
NULL, scratch_pool));
- svn_pool_destroy(scratch_pool);
return SVN_NO_ERROR;
}
@@ -3334,17 +3346,22 @@ svn_ra_serf__do_update(svn_ra_session_t
const char *update_target,
svn_depth_t depth,
svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
const svn_delta_editor_t *update_editor,
void *update_baton,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
svn_ra_serf__session_t *session = ra_session->priv;
- return make_update_reporter(ra_session, reporter, report_baton,
- revision_to_update_to,
- session->session_url.path, NULL, update_target,
- depth, FALSE, TRUE, send_copyfrom_args,
- update_editor, update_baton, pool);
+ SVN_ERR(make_update_reporter(ra_session, reporter, report_baton,
+ revision_to_update_to,
+ session->session_url.path, NULL, update_target,
+ depth, ignore_ancestry, TRUE /* text_deltas */,
+ send_copyfrom_args,
+ update_editor, update_baton,
+ result_pool, scratch_pool));
+ return SVN_NO_ERROR;
}
svn_error_t *
@@ -3362,12 +3379,16 @@ svn_ra_serf__do_diff(svn_ra_session_t *r
apr_pool_t *pool)
{
svn_ra_serf__session_t *session = ra_session->priv;
+ apr_pool_t *scratch_pool = svn_pool_create(pool);
- return make_update_reporter(ra_session, reporter, report_baton,
- revision,
- session->session_url.path, versus_url, diff_target,
- depth, ignore_ancestry, text_deltas, FALSE,
- diff_editor, diff_baton, pool);
+ SVN_ERR(make_update_reporter(ra_session, reporter, report_baton,
+ revision,
+ session->session_url.path, versus_url, diff_target,
+ depth, ignore_ancestry, text_deltas, FALSE,
+ diff_editor, diff_baton,
+ pool, scratch_pool));
+ svn_pool_destroy(scratch_pool);
+ return SVN_NO_ERROR;
}
svn_error_t *
@@ -3382,12 +3403,16 @@ svn_ra_serf__do_status(svn_ra_session_t
apr_pool_t *pool)
{
svn_ra_serf__session_t *session = ra_session->priv;
+ apr_pool_t *scratch_pool = svn_pool_create(pool);
- return make_update_reporter(ra_session, reporter, report_baton,
- revision,
- session->session_url.path, NULL, status_target,
- depth, FALSE, FALSE, FALSE,
- status_editor, status_baton, pool);
+ SVN_ERR(make_update_reporter(ra_session, reporter, report_baton,
+ revision,
+ session->session_url.path, NULL, status_target,
+ depth, FALSE, FALSE, FALSE,
+ status_editor, status_baton,
+ pool, scratch_pool));
+ svn_pool_destroy(scratch_pool);
+ return SVN_NO_ERROR;
}
svn_error_t *
@@ -3416,7 +3441,7 @@ svn_ra_serf__do_switch(svn_ra_session_t
TRUE /* text_deltas */,
send_copyfrom_args,
switch_editor, switch_baton,
- result_pool);
+ result_pool, scratch_pool);
}
/* Helper svn_ra_serf__get_file(). Attempts to fetch file contents
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_serf/util.c Mon Apr 8 11:47:02 2013
@@ -497,7 +497,7 @@ svn_ra_serf__conn_closed(serf_connection
err = svn_error_trace(connection_closed(ra_conn, why, pool));
- (void) save_error(ra_conn->session, err);
+ save_error(ra_conn->session, err);
}
@@ -1490,7 +1490,7 @@ svn_ra_serf__process_pending(svn_ra_serf
/* Tell the parser that no more content will be parsed. Ignore the
return status. We just don't care. */
- (void) XML_Parse(parser->xmlp, NULL, 0, 1);
+ XML_Parse(parser->xmlp, NULL, 0, 1);
apr_pool_cleanup_run(parser->pool, &parser->xmlp, xml_parser_cleanup);
parser->xmlp = NULL;
@@ -1711,7 +1711,7 @@ svn_ra_serf__handle_xml_parser(serf_requ
SVN_ERR_ASSERT(ctx->xmlp != NULL);
/* Ignore the return status. We just don't care. */
- (void) XML_Parse(ctx->xmlp, NULL, 0, 1);
+ XML_Parse(ctx->xmlp, NULL, 0, 1);
apr_pool_cleanup_run(ctx->pool, &ctx->xmlp, xml_parser_cleanup);
add_done_item(ctx);
@@ -1763,7 +1763,7 @@ svn_ra_serf__credentials_callback(char *
if (err)
{
- (void) save_error(session, err);
+ save_error(session, err);
return err->apr_err;
}
@@ -1772,8 +1772,8 @@ svn_ra_serf__credentials_callback(char *
if (!creds || session->auth_attempts > 4)
{
/* No more credentials. */
- (void) save_error(session,
- svn_error_create(
+ save_error(session,
+ svn_error_create(
SVN_ERR_AUTHN_FAILED, NULL,
_("No more credentials or we tried too many "
"times.\nAuthentication failed")));
@@ -1794,8 +1794,8 @@ svn_ra_serf__credentials_callback(char *
if (!session->proxy_username || session->proxy_auth_attempts > 4)
{
/* No more credentials. */
- (void) save_error(session,
- svn_error_create(
+ save_error(session,
+ svn_error_create(
SVN_ERR_AUTHN_FAILED, NULL,
_("Proxy authentication failed")));
return SVN_ERR_AUTHN_FAILED;
@@ -2217,8 +2217,8 @@ svn_ra_serf__request_create(svn_ra_serf_
/* ### do we need to hold onto the returned request object, or just
### not worry about it (the serf ctx will manage it). */
- (void) serf_connection_request_create(handler->conn->conn,
- setup_request_cb, handler);
+ serf_connection_request_create(handler->conn->conn,
+ setup_request_cb, handler);
}
@@ -2446,7 +2446,7 @@ expat_start(void *userData, const char *
#ifdef EXPAT_HAS_STOPPARSER
if (ectx->inner_error)
- (void) XML_StopParser(ectx->parser, 0 /* resumable */);
+ XML_StopParser(ectx->parser, 0 /* resumable */);
#endif
}
@@ -2465,7 +2465,7 @@ expat_end(void *userData, const char *ra
#ifdef EXPAT_HAS_STOPPARSER
if (ectx->inner_error)
- (void) XML_StopParser(ectx->parser, 0 /* resumable */);
+ XML_StopParser(ectx->parser, 0 /* resumable */);
#endif
}
@@ -2484,7 +2484,7 @@ expat_cdata(void *userData, const char *
#ifdef EXPAT_HAS_STOPPARSER
if (ectx->inner_error)
- (void) XML_StopParser(ectx->parser, 0 /* resumable */);
+ XML_StopParser(ectx->parser, 0 /* resumable */);
#endif
}
@@ -2570,7 +2570,7 @@ expat_response_handler(serf_request_t *r
{
/* Tell expat we've reached the end of the content. Ignore the
return status. We just don't care. */
- (void) XML_Parse(ectx->parser, NULL, 0, 1 /* isFinal */);
+ XML_Parse(ectx->parser, NULL, 0, 1 /* isFinal */);
svn_ra_serf__xml_context_destroy(ectx->xmlctx);
apr_pool_cleanup_run(ectx->cleanup_pool, &ectx->parser,
Modified: subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c?rev=1465596&r1=1465595&r2=1465596&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_ra_svn/client.c Mon Apr 8 11:47:02 2013
@@ -259,10 +259,8 @@ static svn_error_t *ra_svn_set_path(void
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, pool,
- svn_ra_svn_cmd_set_path,
- path, rev, start_empty, lock_token,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_cmd_set_path(b->conn, pool, path, rev,
+ start_empty, lock_token, depth));
return SVN_NO_ERROR;
}
@@ -271,8 +269,7 @@ static svn_error_t *ra_svn_delete_path(v
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, pool,
- svn_ra_svn_cmd_delete_path, path));
+ SVN_ERR(svn_ra_svn_write_cmd_delete_path(b->conn, pool, path));
return SVN_NO_ERROR;
}
@@ -286,11 +283,8 @@ static svn_error_t *ra_svn_link_path(voi
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, pool,
- svn_ra_svn_cmd_link_path,
- path, url, rev, start_empty,
- lock_token,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_cmd_link_path(b->conn, pool, path, url, rev,
+ start_empty, lock_token, depth));
return SVN_NO_ERROR;
}
@@ -299,8 +293,7 @@ static svn_error_t *ra_svn_finish_report
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, b->pool,
- svn_ra_svn_cmd_finish_report));
+ SVN_ERR(svn_ra_svn_write_cmd_finish_report(b->conn, b->pool));
SVN_ERR(handle_auth_request(b->sess_baton, b->pool));
SVN_ERR(svn_ra_svn_drive_editor2(b->conn, b->pool, b->editor, b->edit_baton,
NULL, FALSE));
@@ -313,8 +306,7 @@ static svn_error_t *ra_svn_abort_report(
{
ra_svn_reporter_baton_t *b = baton;
- SVN_ERR(svn_ra_svn_write_templated_cmd(b->conn, b->pool,
- svn_ra_svn_cmd_abort_report));
+ SVN_ERR(svn_ra_svn_write_cmd_abort_report(b->conn, b->pool));
return SVN_NO_ERROR;
}
@@ -494,7 +486,9 @@ static svn_error_t *make_tunnel(const ch
if (status == APR_SUCCESS)
status = apr_proc_create(proc, *args, args, NULL, attr, pool);
if (status != APR_SUCCESS)
- return svn_error_wrap_apr(status, _("Can't create tunnel"));
+ return svn_error_create(SVN_ERR_RA_CANNOT_CREATE_TUNNEL,
+ svn_error_wrap_apr(status,
+ _("Can't create tunnel")), NULL);
/* Arrange for the tunnel agent to get a SIGTERM on pool
* cleanup. This is a little extreme, but the alternatives
@@ -779,8 +773,7 @@ static svn_error_t *ra_svn_reparent(svn_
svn_ra_svn__session_baton_t *new_sess;
apr_uri_t uri;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_reparent, url));
+ SVN_ERR(svn_ra_svn_write_cmd_reparent(conn, pool, url));
err = handle_auth_request(sess, pool);
if (! err)
{
@@ -829,8 +822,7 @@ static svn_error_t *ra_svn_get_latest_re
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_get_latest_rev));
+ SVN_ERR(svn_ra_svn_write_cmd_get_latest_rev(conn, pool));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "r", rev));
return SVN_NO_ERROR;
@@ -843,9 +835,7 @@ static svn_error_t *ra_svn_get_dated_rev
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_get_dated_rev,
- svn_time_to_cstring(tm, pool)));
+ SVN_ERR(svn_ra_svn_write_cmd_get_dated_rev(conn, pool, tm));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "r", rev));
return SVN_NO_ERROR;
@@ -888,14 +878,12 @@ static svn_error_t *ra_svn_change_rev_pr
}
if (has_atomic_revprops)
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_change_rev_prop2,
- rev, name, value, dont_care,
- old_value));
+ SVN_ERR(svn_ra_svn_write_cmd_change_rev_prop2(conn, pool, rev, name,
+ value, dont_care,
+ old_value));
else
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_change_rev_prop,
- rev, name, value));
+ SVN_ERR(svn_ra_svn_write_cmd_change_rev_prop(conn, pool, rev, name,
+ value));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, ""));
@@ -932,8 +920,7 @@ static svn_error_t *ra_svn_rev_proplist(
svn_ra_svn_conn_t *conn = sess_baton->conn;
apr_array_header_t *proplist;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_rev_proplist, rev));
+ SVN_ERR(svn_ra_svn_write_cmd_rev_proplist(conn, pool, rev));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "l", &proplist));
SVN_ERR(svn_ra_svn_parse_proplist(proplist, pool, props));
@@ -947,8 +934,7 @@ static svn_error_t *ra_svn_rev_prop(svn_
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_rev_prop, rev, name));
+ SVN_ERR(svn_ra_svn_write_cmd_rev_prop(conn, pool, rev, name));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "(?s)", value));
return SVN_NO_ERROR;
@@ -1141,9 +1127,8 @@ static svn_error_t *ra_svn_get_file(svn_
svn_checksum_ctx_t *checksum_ctx;
apr_pool_t *iterpool;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_get_file, path, rev,
- (props != NULL), (stream != NULL)));
+ SVN_ERR(svn_ra_svn_write_cmd_get_file(conn, pool, path, rev,
+ (props != NULL), (stream != NULL)));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "(?c)rl",
&expected_digest,
@@ -1364,18 +1349,20 @@ static svn_error_t *ra_svn_update(svn_ra
void **report_baton, svn_revnum_t rev,
const char *target, svn_depth_t depth,
svn_boolean_t send_copyfrom_args,
+ svn_boolean_t ignore_ancestry,
const svn_delta_editor_t *update_editor,
- void *update_baton, apr_pool_t *pool)
+ void *update_baton,
+ apr_pool_t *pool,
+ apr_pool_t *scratch_pool)
{
svn_ra_svn__session_baton_t *sess_baton = session->priv;
svn_ra_svn_conn_t *conn = sess_baton->conn;
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start an update. */
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_update,
- rev, target, recurse,
- svn_depth_to_word(depth),
- send_copyfrom_args));
+ SVN_ERR(svn_ra_svn_write_cmd_update(conn, pool, rev, target, recurse,
+ depth, send_copyfrom_args,
+ ignore_ancestry));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1404,10 +1391,9 @@ ra_svn_switch(svn_ra_session_t *session,
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start a switch. */
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_switch,
- rev, target, recurse, switch_url,
- svn_depth_to_word(depth),
- send_copyfrom_args, ignore_ancestry));
+ SVN_ERR(svn_ra_svn_write_cmd_switch(conn, pool, rev, target, recurse,
+ switch_url, depth,
+ send_copyfrom_args, ignore_ancestry));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1430,9 +1416,8 @@ static svn_error_t *ra_svn_status(svn_ra
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start a status operation. */
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_status,
- target, recurse, rev,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_cmd_status(conn, pool, target, recurse, rev,
+ depth));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1458,10 +1443,9 @@ static svn_error_t *ra_svn_diff(svn_ra_s
svn_boolean_t recurse = DEPTH_TO_RECURSE(depth);
/* Tell the server we want to start a diff. */
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_diff,
- rev, target, recurse, ignore_ancestry,
- versus_url, text_deltas,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_cmd_diff(conn, pool, rev, target, recurse,
+ ignore_ancestry, versus_url,
+ text_deltas, depth));
SVN_ERR(handle_auth_request(sess_baton, pool));
/* Fetch a reporter for the caller to drive. The reporter will drive
@@ -1693,9 +1677,7 @@ static svn_error_t *ra_svn_check_path(sv
svn_ra_svn_conn_t *conn = sess_baton->conn;
const char *kind_word;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_check_path,
- path, rev));
+ SVN_ERR(svn_ra_svn_write_cmd_check_path(conn, pool, path, rev));
SVN_ERR(handle_auth_request(sess_baton, pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "w", &kind_word));
*kind = svn_node_kind_from_word(kind_word);
@@ -1724,9 +1706,7 @@ static svn_error_t *ra_svn_stat(svn_ra_s
apr_array_header_t *list = NULL;
svn_dirent_t *the_dirent;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool, svn_ra_svn_cmd_stat,
- path, rev));
-
+ SVN_ERR(svn_ra_svn_write_cmd_stat(conn, pool, path, rev));
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
N_("'stat' not implemented")));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, pool, "(?l)", &list));
@@ -1903,10 +1883,9 @@ static svn_error_t *ra_svn_get_file_revs
rev_pool = svn_pool_create(pool);
chunk_pool = svn_pool_create(pool);
- SVN_ERR(svn_ra_svn_write_templated_cmd(sess_baton->conn, pool,
- svn_ra_svn_cmd_get_file_revs,
- path, start, end,
- include_merged_revisions));
+ SVN_ERR(svn_ra_svn_write_cmd_get_file_revs(sess_baton->conn, pool,
+ path, start, end,
+ include_merged_revisions));
/* Servers before 1.1 don't support this command. Check for this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
@@ -2035,10 +2014,8 @@ static svn_error_t *ra_svn_lock_compat(s
path = key;
revnum = val;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, iterpool,
- svn_ra_svn_cmd_lock,
- path, comment,
- steal_lock, *revnum));
+ SVN_ERR(svn_ra_svn_write_cmd_lock(conn, iterpool, path, comment,
+ steal_lock, *revnum));
/* Servers before 1.2 doesn't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
@@ -2101,9 +2078,8 @@ static svn_error_t *ra_svn_unlock_compat
else
token = NULL;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, iterpool,
- svn_ra_svn_cmd_unlock,
- path, token, break_lock));
+ SVN_ERR(svn_ra_svn_write_cmd_unlock(conn, iterpool, path, token,
+ break_lock));
/* Servers before 1.2 don't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, iterpool),
@@ -2390,8 +2366,7 @@ static svn_error_t *ra_svn_get_lock(svn_
svn_ra_svn_conn_t* conn = sess->conn;
apr_array_header_t *list;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_get_lock, path));
+ SVN_ERR(svn_ra_svn_write_cmd_get_lock(conn, pool, path));
/* Servers before 1.2 doesn't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
@@ -2443,9 +2418,7 @@ static svn_error_t *ra_svn_get_locks(svn
SVN_ERR(path_relative_to_root(session, &abs_path, full_url, pool));
abs_path = svn_fspath__canonicalize(abs_path, pool);
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_get_locks, path,
- svn_depth_to_word(depth)));
+ SVN_ERR(svn_ra_svn_write_cmd_get_locks(conn, pool, path, depth));
/* Servers before 1.2 doesn't support locking. Check this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
@@ -2502,9 +2475,8 @@ static svn_error_t *ra_svn_replay(svn_ra
{
svn_ra_svn__session_baton_t *sess = session->priv;
- SVN_ERR(svn_ra_svn_write_templated_cmd(sess->conn, pool,
- svn_ra_svn_cmd_replay, revision,
- low_water_mark, send_deltas));
+ SVN_ERR(svn_ra_svn_write_cmd_replay(sess->conn, pool, revision,
+ low_water_mark, send_deltas));
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
N_("Server doesn't support the replay "
@@ -2533,10 +2505,9 @@ ra_svn_replay_range(svn_ra_session_t *se
svn_revnum_t rev;
svn_boolean_t drive_aborted = FALSE;
- SVN_ERR(svn_ra_svn_write_templated_cmd(sess->conn, pool,
- svn_ra_svn_cmd_replay_range,
- start_revision, end_revision,
- low_water_mark, send_deltas));
+ SVN_ERR(svn_ra_svn_write_cmd_replay_range(sess->conn, pool,
+ start_revision, end_revision,
+ low_water_mark, send_deltas));
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess, pool),
N_("Server doesn't support the "
@@ -2642,9 +2613,8 @@ ra_svn_get_deleted_rev(svn_ra_session_t
svn_ra_svn_conn_t *conn = sess_baton->conn;
/* Transmit the parameters. */
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, pool,
- svn_ra_svn_cmd_get_deleted_rev,
- path, peg_revision, end_revision));
+ SVN_ERR(svn_ra_svn_write_cmd_get_deleted_rev(conn, pool, path,
+ peg_revision, end_revision));
/* Servers before 1.6 don't support this command. Check for this here. */
SVN_ERR(handle_unsupported_cmd(handle_auth_request(sess_baton, pool),
@@ -2677,9 +2647,8 @@ ra_svn_get_inherited_props(svn_ra_sessio
svn_ra_svn_conn_t *conn = sess_baton->conn;
apr_array_header_t *iproplist;
- SVN_ERR(svn_ra_svn_write_templated_cmd(conn, scratch_pool,
- svn_ra_svn_cmd_get_iprops,
- path, revision));
+ SVN_ERR(svn_ra_svn_write_cmd_get_iprops(conn, scratch_pool,
+ path, revision));
SVN_ERR(handle_auth_request(sess_baton, scratch_pool));
SVN_ERR(svn_ra_svn_read_cmd_response(conn, scratch_pool, "l", &iproplist));
SVN_ERR(parse_iproplist(iprops, iproplist, session, result_pool,