Author: stsp
Date: Wed Jun 3 08:56:46 2015
New Revision: 1683257
URL: http://svn.apache.org/r1683257
Log:
Start introducing some actual svn_client_conflict API functions.
The API functions introduced with this commit are very trivial ones.
* subversion/include/svn_client.h
(svn_client_conflict_get_local_abspath,
svn_client_conflict_get_operation,
svn_client_conflict_get_incoming_change,
svn_client_conflict_get_local_change): Declare. These function replace the
macros called svn_client_conflict_get_local_abspath,
svn_client_conflict_get_operation, svn_client_conflict_get_action, and
svn_client_conflict_get_reason.
* subversion/libsvn_client/resolved.c
(svn_client_conflict_get_local_abspath,
svn_client_conflict_get_operation,
svn_client_conflict_get_incoming_change,
svn_client_conflict_get_local_change): Implement.
* subversion/svn/cl-conflicts.c
(svn_cl__get_human_readable_prop_conflict_description,
(svn_cl__get_human_readable_tree_conflict_description,
append_tree_conflict_info_xml): Switch to new functions replacing macros.
* subversion/svn/conflict-callbacks.c
(handle_tree_conflict, conflict_func_interactive): Likewise.
Modified:
subversion/trunk/subversion/include/svn_client.h
subversion/trunk/subversion/libsvn_client/resolved.c
subversion/trunk/subversion/svn/cl-conflicts.c
subversion/trunk/subversion/svn/conflict-callbacks.c
Modified: subversion/trunk/subversion/include/svn_client.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_client.h?rev=1683257&r1=1683256&r2=1683257&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_client.h (original)
+++ subversion/trunk/subversion/include/svn_client.h Wed Jun 3 08:56:46 2015
@@ -4362,14 +4362,54 @@ svn_client_revert(const apr_array_header
*/
/**
+ * Return the absolute path to the conflicted working copy node described
+ * by @a conflict.
+ *
+ * @since New in 1.10.
+ */
+const char *
+svn_client_conflict_get_local_abspath(svn_wc_conflict_description2_t
*conflict);
+
+/**
+ * Return the operation during which the conflict described by @a
+ * conflict was recorded.
+ *
+ * @since New in 1.10.
+ */
+svn_wc_operation_t
+svn_client_conflict_get_operation(svn_wc_conflict_description2_t *conflict);
+
+/**
+ * Return the action an update, switch, or merge operation attempted to
+ * perform on the working copy node described by @a conflict.
+ *
+ * @since New in 1.10.
+ */
+svn_wc_conflict_action_t
+svn_client_conflict_get_incoming_change(
+ svn_wc_conflict_description2_t *conflict);
+
+/**
+ * Return the reason why the attempted action performed by an update, switch,
+ * or merge operation conflicted with the state of the node in the working
copy.
+ *
+ * During update and switch operations this local change is part of uncommitted
+ * modifications in the working copy. During merge operations it may
+ * additionally be part of the history of the merge target branch, anywhere
+ * between the common ancestor revision and the working copy revision.
+ *
+ * @since New in 1.10.
+ */
+svn_wc_conflict_reason_t
+svn_client_conflict_get_local_change(svn_wc_conflict_description2_t *conflict);
+
+/**
* Accessor functions for svn_wc_conflict_description2_t. This is a temporary
* API for eventually replacing svn_wc_conflict_description2_t with an opaque
* type and providing improved APIs for conflict resolution.
*
* @since New in 1.10.
*/
-#define svn_client_conflict_get_local_abspath(conflict) \
- ((conflict)->local_abspath)
#define svn_client_conflict_get_node_kind(conflict) \
((conflict)->node_kind)
@@ -4386,12 +4426,6 @@ svn_client_revert(const apr_array_header
#define svn_client_conflict_get_mime_type(conflict) \
((conflict)->mime_type)
-#define svn_client_conflict_get_action(conflict) \
- ((conflict)->action)
-
-#define svn_client_conflict_get_reason(conflict) \
- ((conflict)->reason)
-
#define svn_client_conflict_get_base_abspath(conflict) \
((conflict)->base_abspath)
@@ -4404,9 +4438,6 @@ svn_client_revert(const apr_array_header
#define svn_client_conflict_get_merged_file(conflict) \
((conflict)->merged_file)
-#define svn_client_conflict_get_operation(conflict) \
- ((conflict)->operation)
-
#define svn_client_conflict_get_src_left_version(conflict) \
((conflict)->src_left_version)
Modified: subversion/trunk/subversion/libsvn_client/resolved.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/resolved.c?rev=1683257&r1=1683256&r2=1683257&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/resolved.c (original)
+++ subversion/trunk/subversion/libsvn_client/resolved.c Wed Jun 3 08:56:46
2015
@@ -144,3 +144,31 @@ svn_client_resolve(const char *path,
return svn_error_trace(err);
}
+
+
+/*** Dealing with conflitcs. ***/
+
+const char *
+svn_client_conflict_get_local_abspath(svn_wc_conflict_description2_t *conflict)
+{
+ return conflict->local_abspath;
+}
+
+svn_wc_operation_t
+svn_client_conflict_get_operation(svn_wc_conflict_description2_t *conflict)
+{
+ return conflict->operation;
+}
+
+svn_wc_conflict_action_t
+svn_client_conflict_get_incoming_change(
+ svn_wc_conflict_description2_t *conflict)
+{
+ return conflict->action;
+}
+
+svn_wc_conflict_reason_t
+svn_client_conflict_get_local_change(svn_wc_conflict_description2_t *conflict)
+{
+ return conflict->reason;
+}
Modified: subversion/trunk/subversion/svn/cl-conflicts.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/cl-conflicts.c?rev=1683257&r1=1683256&r2=1683257&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/cl-conflicts.c (original)
+++ subversion/trunk/subversion/svn/cl-conflicts.c Wed Jun 3 08:56:46 2015
@@ -236,7 +236,7 @@ svn_cl__get_human_readable_prop_conflict
/* We provide separately translatable strings for the values that we
* know about, and a fall-back in case any other values occur. */
- switch (svn_client_conflict_get_reason(conflict))
+ switch (svn_client_conflict_get_local_change(conflict))
{
case svn_wc_conflict_reason_edited:
reason_str = _("local edit");
@@ -251,13 +251,14 @@ svn_cl__get_human_readable_prop_conflict
reason_str = _("local obstruction");
break;
default:
- reason_str = apr_psprintf(pool, _("local %s"),
- svn_token__to_word(
- map_conflict_reason_xml,
- svn_client_conflict_get_reason(conflict)));
+ reason_str = apr_psprintf(
+ pool, _("local %s"),
+ svn_token__to_word(
+ map_conflict_reason_xml,
+ svn_client_conflict_get_local_change(conflict)));
break;
}
- switch (svn_client_conflict_get_action(conflict))
+ switch (svn_client_conflict_get_incoming_change(conflict))
{
case svn_wc_conflict_action_edit:
action_str = _("incoming edit");
@@ -269,10 +270,11 @@ svn_cl__get_human_readable_prop_conflict
action_str = _("incoming delete");
break;
default:
- action_str = apr_psprintf(pool, _("incoming %s"),
- svn_token__to_word(
- map_conflict_action_xml,
- svn_client_conflict_get_action(conflict)));
+ action_str = apr_psprintf(
+ pool, _("incoming %s"),
+ svn_token__to_word(
+ map_conflict_action_xml,
+ svn_client_conflict_get_incoming_change(conflict)));
break;
}
SVN_ERR_ASSERT(reason_str && action_str);
@@ -296,8 +298,8 @@ svn_cl__get_human_readable_tree_conflict
svn_wc_operation_t conflict_operation;
svn_node_kind_t conflict_node_kind;
- conflict_action = svn_client_conflict_get_action(conflict);
- conflict_reason = svn_client_conflict_get_reason(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);
@@ -434,11 +436,11 @@ append_tree_conflict_info_xml(svn_string
svn_client_conflict_get_operation(conflict), pool));
tmp = svn_token__to_word(map_conflict_action_xml,
- svn_client_conflict_get_action(conflict));
+ svn_client_conflict_get_incoming_change(conflict));
svn_hash_sets(att_hash, "action", tmp);
tmp = svn_token__to_word(map_conflict_reason_xml,
- svn_client_conflict_get_reason(conflict));
+ svn_client_conflict_get_local_change(conflict));
svn_hash_sets(att_hash, "reason", tmp);
/* Open the tree-conflict tag. */
Modified: subversion/trunk/subversion/svn/conflict-callbacks.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/conflict-callbacks.c?rev=1683257&r1=1683256&r2=1683257&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/conflict-callbacks.c (original)
+++ subversion/trunk/subversion/svn/conflict-callbacks.c Wed Jun 3 08:56:46
2015
@@ -1185,7 +1185,7 @@ handle_tree_conflict(svn_wc_conflict_res
{
svn_wc_conflict_reason_t reason;
- reason = svn_client_conflict_get_reason(desc);
+ reason = svn_client_conflict_get_local_change(desc);
if (reason == svn_wc_conflict_reason_moved_away)
{
tc_opts = tree_conflict_options_update_moved_away;
@@ -1193,7 +1193,7 @@ handle_tree_conflict(svn_wc_conflict_res
else if (reason == svn_wc_conflict_reason_deleted ||
reason == svn_wc_conflict_reason_replaced)
{
- if (svn_client_conflict_get_action(desc) ==
+ if (svn_client_conflict_get_incoming_change(desc) ==
svn_wc_conflict_action_edit &&
svn_client_conflict_get_node_kind(desc) == svn_node_dir)
tc_opts = tree_conflict_options_update_edit_deleted_dir;
@@ -1365,8 +1365,9 @@ conflict_func_interactive(svn_wc_conflic
Conflicting edits on a property.
*/
if (((svn_client_conflict_get_kind(desc) == svn_wc_conflict_kind_text)
- && (svn_client_conflict_get_action(desc) == svn_wc_conflict_action_edit)
- && (svn_client_conflict_get_reason(desc) ==
+ && (svn_client_conflict_get_incoming_change(desc) ==
+ svn_wc_conflict_action_edit)
+ && (svn_client_conflict_get_local_change(desc) ==
svn_wc_conflict_reason_edited)))
SVN_ERR(handle_text_conflict(*result, desc, b, scratch_pool));
else if (svn_client_conflict_get_kind(desc) == svn_wc_conflict_kind_property)