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 2016/02/23 11:30:08 UTC
svn commit: r1731834 - /subversion/trunk/subversion/libsvn_client/resolved.c
Author: stsp
Date: Tue Feb 23 10:30:08 2016
New Revision: 1731834
URL: http://svn.apache.org/viewvc?rev=1731834&view=rev
Log:
Continue breaking up the massive resolve_tree_conflict() function into smaller
per-resolution option handlers.
* subversion/libsvn_client/resolved.c
(resolve_update_moved_away_node): New helper function.
(svn_client_conflict_tree_get_resolution_options): Assign new helper to the
appropriate option.
Modified:
subversion/trunk/subversion/libsvn_client/resolved.c
Modified: subversion/trunk/subversion/libsvn_client/resolved.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/resolved.c?rev=1731834&r1=1731833&r2=1731834&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/resolved.c (original)
+++ subversion/trunk/subversion/libsvn_client/resolved.c Tue Feb 23 10:30:08 2016
@@ -940,6 +940,39 @@ resolve_update_break_moved_away(svn_clie
return SVN_NO_ERROR;
}
+/* Implements conflict_option_resolve_func_t. */
+static svn_error_t *
+resolve_update_moved_away_node(svn_client_conflict_option_t *option,
+ svn_client_conflict_t *conflict,
+ apr_pool_t *scratch_pool)
+{
+ const char *local_abspath;
+ const char *lock_abspath;
+ svn_client_ctx_t *ctx = conflict->ctx;
+ svn_error_t *err;
+
+ local_abspath = svn_client_conflict_get_local_abspath(conflict);
+
+ SVN_ERR(svn_wc__acquire_write_lock_for_resolve(&lock_abspath, ctx->wc_ctx,
+ local_abspath,
+ scratch_pool, scratch_pool));
+ err = svn_wc__conflict_tree_update_moved_away_node(ctx->wc_ctx,
+ local_abspath,
+ ctx->cancel_func,
+ ctx->cancel_baton,
+ ctx->notify_func2,
+ ctx->notify_baton2,
+ scratch_pool);
+ err = svn_error_compose_create(err, svn_wc__release_write_lock(ctx->wc_ctx,
+ lock_abspath,
+ scratch_pool));
+ SVN_ERR(err);
+
+ conflict->resolution_tree = svn_client_conflict_option_get_id(option);
+
+ return SVN_NO_ERROR;
+}
+
/* Resolver options for a text conflict */
static const svn_client_conflict_option_t text_conflict_options[] =
{
@@ -1244,7 +1277,7 @@ svn_client_conflict_tree_get_resolution_
option->description =
_("apply incoming changes to move destination");
option->conflict = conflict;
- option->do_resolve_func = resolve_tree_conflict;
+ option->do_resolve_func = resolve_update_moved_away_node;
APR_ARRAY_PUSH((*options), const svn_client_conflict_option_t *) =
option;
}