You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2013/01/15 17:16:32 UTC
svn commit: r1433486 - /subversion/trunk/subversion/libsvn_wc/conflicts.c
Author: rhuijben
Date: Tue Jan 15 16:16:32 2013
New Revision: 1433486
URL: http://svn.apache.org/viewvc?rev=1433486&view=rev
Log:
Use a boolean to determine when a conflict is resolved, instead of a few
values in an enum, which are eventually just compared to a single value.
* subversion/libsvn_wc/conflicts.c
(eval_text_conflict_func_result): Simplify output argument.
(resolve_text_conflicts): Don't call eval_text_conflict_func_result for
postponing and return result as boolean.
(svn_wc__conflict_invoke_resolver): Simplify code by not checking a faked
merge result.
Modified:
subversion/trunk/subversion/libsvn_wc/conflicts.c
Modified: subversion/trunk/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/conflicts.c?rev=1433486&r1=1433485&r2=1433486&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_wc/conflicts.c Tue Jan 15 16:16:32 2013
@@ -1471,7 +1471,7 @@ generate_propconflict(svn_boolean_t *con
* CHOICE.
*
* Set *WORK_ITEMS to new work items that will ...
- * Set *MERGE_OUTCOME to the result of the 3-way merge.
+ * Set *IS_RESOLVED to true if the conflicts are resolved, otherwise to false.
*
* LEFT_ABSPATH, RIGHT_ABSPATH, and TARGET_ABSPATH are the input files to
* the 3-way merge, and MERGED_FILE is the merged result as generated by the
@@ -1482,7 +1482,7 @@ generate_propconflict(svn_boolean_t *con
* diff3 implementation in case a 3-way merge has to be carried out. */
static svn_error_t*
eval_text_conflict_func_result(svn_skel_t **work_items,
- enum svn_wc_merge_outcome_t *merge_outcome,
+ svn_boolean_t *is_resolved,
svn_wc__db_t *db,
const char *local_abspath,
svn_wc_conflict_choice_t choice,
@@ -1506,19 +1506,19 @@ eval_text_conflict_func_result(svn_skel_
case svn_wc_conflict_choose_base:
{
install_from = left_abspath;
- *merge_outcome = svn_wc_merge_merged;
+ *is_resolved = TRUE;
break;
}
case svn_wc_conflict_choose_theirs_full:
{
install_from = right_abspath;
- *merge_outcome = svn_wc_merge_merged;
+ *is_resolved = TRUE;
break;
}
case svn_wc_conflict_choose_mine_full:
{
/* Do nothing to merge_target, let it live untouched! */
- *merge_outcome = svn_wc_merge_merged;
+ *is_resolved = TRUE;
return SVN_NO_ERROR;
}
case svn_wc_conflict_choose_theirs_conflict:
@@ -1566,7 +1566,7 @@ eval_text_conflict_func_result(svn_skel_
install_from = chosen_path;
remove_source = TRUE;
- *merge_outcome = svn_wc_merge_merged;
+ *is_resolved = TRUE;
break;
}
@@ -1579,19 +1579,14 @@ eval_text_conflict_func_result(svn_skel_
case svn_wc_conflict_choose_merged:
{
install_from = merged_file;
- *merge_outcome = svn_wc_merge_merged;
+ *is_resolved = TRUE;
break;
}
case svn_wc_conflict_choose_postpone:
default:
{
-#if 0
- /* ### what should this value be? no caller appears to initialize
- ### it, so we really SHOULD be setting a value here. */
- *merge_outcome = svn_wc_merge_merged;
-#endif
-
/* Assume conflict remains. */
+ *is_resolved = FALSE;
return SVN_NO_ERROR;
}
}
@@ -1672,7 +1667,7 @@ save_merge_result(svn_skel_t **work_item
external 3-way merge. */
static svn_error_t*
resolve_text_conflicts(svn_skel_t **work_items,
- svn_wc_merge_outcome_t *merge_outcome,
+ svn_boolean_t *was_resolved,
svn_wc__db_t *db,
const char *local_abspath,
const apr_array_header_t *merge_options,
@@ -1694,6 +1689,7 @@ resolve_text_conflicts(svn_skel_t **work
apr_hash_t *props;
*work_items = NULL;
+ *was_resolved = FALSE;
/* Give the conflict resolution callback a chance to clean
up the conflicts before we mark the file 'conflicted' */
@@ -1732,27 +1728,24 @@ resolve_text_conflicts(svn_skel_t **work
result_pool, scratch_pool));
}
- SVN_ERR(eval_text_conflict_func_result(&work_item,
- merge_outcome,
- db, local_abspath,
- result->choice,
- merge_options,
- left_abspath,
- right_abspath,
- result->merged_file
- ? result->merged_file
- : result_target,
- detranslated_target,
- result_pool, scratch_pool));
- *work_items = svn_wc__wq_merge(*work_items, work_item, result_pool);
-
if (result->choice != svn_wc_conflict_choose_postpone)
- /* The conflicts have been dealt with, nothing else
- * to do for us here. */
- return SVN_NO_ERROR;
-
- /* The conflicts have not been dealt with. */
- *merge_outcome = svn_wc_merge_conflict;
+ {
+ SVN_ERR(eval_text_conflict_func_result(&work_item,
+ was_resolved,
+ db, local_abspath,
+ result->choice,
+ merge_options,
+ left_abspath,
+ right_abspath,
+ result->merged_file
+ ? result->merged_file
+ : result_target,
+ detranslated_target,
+ result_pool, scratch_pool));
+ *work_items = svn_wc__wq_merge(*work_items, work_item, result_pool);
+ }
+ else
+ *was_resolved = FALSE;
return SVN_NO_ERROR;
}
@@ -1908,7 +1901,7 @@ svn_wc__conflict_invoke_resolver(svn_wc_
const char *their_original_abspath;
const char *their_abspath;
svn_skel_t *work_items;
- svn_wc_merge_outcome_t merge_outcome = svn_wc_merge_conflict;
+ svn_boolean_t was_resolved;
SVN_ERR(svn_wc__conflict_read_text_conflict(&their_original_abspath,
&mine_abspath,
@@ -1917,7 +1910,7 @@ svn_wc__conflict_invoke_resolver(svn_wc_
conflict_skel,
scratch_pool, scratch_pool));
- SVN_ERR(resolve_text_conflicts(&work_items, &merge_outcome,
+ SVN_ERR(resolve_text_conflicts(&work_items, &was_resolved,
db, local_abspath,
merge_options,
operation,
@@ -1929,7 +1922,7 @@ svn_wc__conflict_invoke_resolver(svn_wc_
resolver_func, resolver_baton,
scratch_pool, scratch_pool));
- if (merge_outcome == svn_wc_merge_merged)
+ if (was_resolved)
{
SVN_ERR(svn_wc__db_op_mark_resolved(db, local_abspath, TRUE, FALSE,
FALSE, work_items, scratch_pool));