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 2012/06/28 14:17:07 UTC
svn commit: r1354973 - in /subversion/trunk/subversion/libsvn_wc:
conflicts.c conflicts.h props.c
Author: rhuijben
Date: Thu Jun 28 12:17:06 2012
New Revision: 1354973
URL: http://svn.apache.org/viewvc?rev=1354973&view=rev
Log:
Prepare the prototype-only definitions of the libsvn_wc conflict apr for
an implementation following the notes/wc-ng/conflict-storage-2.0 plan.
This includes renaming a few currently used functions to a temporary name
before switching them to the new api pattern.
This patch contains no functional changes, but includes some documentation
on future plans.
* subversion/libsvn_wc/conflicts.c
(svn_wc__conflict_skel_new): Rename to ...
(svn_wc__prop_conflict_skel_new): ... this.
(svn_wc__conflict_skel_add_prop_conflict): Rename ...
(svn_wc__prop_conflict_skel_add): ... this.
* subversion/libsvn_wc/conflicts.h
(svn_wc__conflict_skel_new,
svn_wc__conflict_skel_is_complete,
svn_wc__conflict_skel_set_op_update,
svn_wc__conflict_skel_set_op_switch,
svn_wc__conflict_skel_set_op_merge,
svn_wc__conflict_skel_add_text_conflict,
svn_wc__conflict_skel_add_prop_conflict,
svn_wc__conflict_skel_add_tree_conflict): Update prototypes for new storage
plans. There are currently no implementations for these functions.
(Intended to be added soon).
(svn_wc__conflict_read_prop_conflict,
svn_wc__conflict_create_property_marker_skel): New prototypes for to be
added functions that should replace svn_wc__prop_conflict_*() later
today.
(svn_wc__prop_conflict_skel_new,
svn_wc__prop_conflict_skel_add): New functions based on the old
svn_wc__conflict_skel_new and svn_wc__conflict_skel_add_prop_conflict.
* subversion/libsvn_wc/props.c
(svn_wc__merge_props): Update caller.
Modified:
subversion/trunk/subversion/libsvn_wc/conflicts.c
subversion/trunk/subversion/libsvn_wc/conflicts.h
subversion/trunk/subversion/libsvn_wc/props.c
Modified: subversion/trunk/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/conflicts.c?rev=1354973&r1=1354972&r2=1354973&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_wc/conflicts.c Thu Jun 28 12:17:06 2012
@@ -52,7 +52,7 @@
#include "svn_private_config.h"
svn_skel_t *
-svn_wc__conflict_skel_new(apr_pool_t *result_pool)
+svn_wc__prop_conflict_skel_new(apr_pool_t *result_pool)
{
svn_skel_t *operation = svn_skel__make_empty_list(result_pool);
svn_skel_t *result = svn_skel__make_empty_list(result_pool);
@@ -82,7 +82,7 @@ prepend_prop_value(const svn_string_t *v
svn_error_t *
-svn_wc__conflict_skel_add_prop_conflict(
+svn_wc__prop_conflict_skel_add(
svn_skel_t *skel,
const char *prop_name,
const svn_string_t *original_value,
Modified: subversion/trunk/subversion/libsvn_wc/conflicts.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/conflicts.h?rev=1354973&r1=1354972&r2=1354973&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/conflicts.h (original)
+++ subversion/trunk/subversion/libsvn_wc/conflicts.h Thu Jun 28 12:17:06 2012
@@ -49,24 +49,45 @@ extern "C" {
#define SVN_WC__CONFLICT_KIND_REJECT "reject"
#define SVN_WC__CONFLICT_KIND_OBSTRUCTED "obstructed"
+/* Return a new conflict skel, allocated in RESULT_POOL.
+ Typically creating a conflict starts with calling this function and then
+ collecting details via one or more calls to svn_wc__conflict_skel_add_*().
-/* Return a new conflict skel, allocated in RESULT_POOL. */
+ The caller can then (when necessary) add operation details via
+ svn_wc__conflict_skel_set_op_*() and store the resulting conflict together
+ with the result of its operation in the working copy database.
+*/
svn_skel_t *
svn_wc__conflict_skel_new(apr_pool_t *result_pool);
+/* Return a boolean in *COMPLETE indicating whether CONFLICT_SKEL contains
+ everything needed for installing in the working copy database.
+
+ This typically checks if CONFLICT_SKEL contains at least one conflict
+ and an operation.
+
+ Perform temporary allocations in SCRATCH_POOL
+ */
+svn_error_t *
+svn_wc__conflict_skel_is_complete(svn_boolean_t *complete,
+ svn_skel_t *conflict_skel,
+ apr_pool_t *scratch_pool);
+
/* Set 'update' as the conflicting operation in CONFLICT_SKEL.
Allocate data stored in the skel in RESULT_POOL.
- BASE_REVISION is the revision the node was at before the update.
- TARGET_REVISION is the revision being updated to.
+ ORIGINAL specifies the BASE node before updating.
- Do temporary allocations in SCRATCH_POOL. */
+ It is an error to set another operation to a conflict skel that
+ already has an operation.
+
+ Do temporary allocations in SCRATCH_POOL. The new skel data is
+ completely stored in RESULT-POOL. */
svn_error_t *
svn_wc__conflict_skel_set_op_update(svn_skel_t *conflict_skel,
- svn_revnum_t base_revision,
- svn_revnum_t target_revision,
+ svn_wc_conflict_version_t *original,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
@@ -74,91 +95,164 @@ svn_wc__conflict_skel_set_op_update(svn_
/* Set 'switch' as the conflicting operation in CONFLICT_SKEL.
Allocate data stored in the skel in RESULT_POOL.
- BASE_REVISION is the revision the node was at before the switch.
- TARGET_REVISION is the revision being switched to.
- REPOS_RELPATH is the path being switched to, relative to the
- repository root.
+ ORIGINAL specifies the BASE node before switching.
+
+ It is an error to set another operation to a conflict skel that
+ already has an operation.
Do temporary allocations in SCRATCH_POOL. */
svn_error_t *
svn_wc__conflict_skel_set_op_switch(svn_skel_t *conflict_skel,
- svn_revnum_t base_revision,
- svn_revnum_t target_revision,
- const char *repos_relpath,
+ svn_wc_conflict_version_t *original,
+ apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
/* Set 'merge' as conflicting operation in CONFLICT_SKEL.
Allocate data stored in the skel in RESULT_POOL.
- REPOS_UUID is the UUID of the repository accessed via REPOS_ROOT_URL.
-
- LEFT_REPOS_RELPATH and RIGHT_REPOS_RELPATH paths to the merge-left
- and merge-right merge sources, relative to REPOS_URL
+ LEFT and RIGHT paths are the merge-left and merge-right merge
+ sources of the merge.
- LEFT_REVISION is the merge-left revision.
- RIGHT_REVISION is the merge-right revision.
+ It is an error to set another operation to a conflict skel that
+ already has an operation.
Do temporary allocations in SCRATCH_POOL. */
svn_error_t *
svn_wc__conflict_skel_set_op_merge(svn_skel_t *conflict_skel,
- const char *repos_uuid,
- const char *repos_root_url,
- svn_revnum_t left_revision,
- const char *left_repos_relpath,
- svn_revnum_t right_revision,
- const char *right_repos_relpath,
+ svn_wc_conflict_version_t *left,
+ svn_wc_conflict_version_t *right,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
-/* Set 'patch' as the conflicting operation in CONFLICT_SKEL.
+/* Add a text conflict to CONFLICT_SKEL.
Allocate data stored in the skel in RESULT_POOL.
- PATCH_SOURCE_LABEL is a string identifying the patch source in
- some way, for display purposes. It is usually the absolute path
- to the patch file, or a token such as "<stdin>" if the patch source
- is not a file.
+ The DB, WRI_ABSPATH pair specifies in which working copy the conflict
+ will be recorded. (Needed for making the paths relative).
+
+ ORIGINAL_ABSPATH, MINE_ABSPATH and THEIR_ABSPATH specify the marker
+ files for this text conflict. Each of these values can be NULL to specify
+ that the node doesn't exist in this case.
+
+ ### It is expected that in a future version we will also want to store
+ ### the sha1 checksum of these files to allow reinstalling the conflict
+ ### markers from the pristine store.
+
+ It is an error to add another text conflict to a conflict skel that
+ already contains a text conflict.
Do temporary allocations in SCRATCH_POOL.
*/
svn_error_t *
-svn_wc__conflict_skel_set_op_patch(svn_skel_t *conflict_skel,
- const char *patch_source_label,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
+svn_wc__conflict_skel_add_text_conflict(svn_skel_t *conflict_skel,
+ svn_wc__db_t *db,
+ const char *wri_abspath,
+ const char *original_abspath,
+ const char *mine_abspath,
+ const char *their_abspath,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
-/* Add a text conflict to CONFLICT_SKEL.
+/* Add property conflict details to CONFLICT_SKEL.
Allocate data stored in the skel in RESULT_POOL.
- All checksums passed should be suitable for retreiving conflicted
- versions of the file from the pristine store.
+ The DB, WRI_ABSPATH pair specifies in which working copy the conflict
+ will be recorded. (Needed for making the paths relative).
- ORIGINAL_CHECKSUM is the checksum of the BASE version of the conflicted
- file (without local modifications).
- MINE_CHECKSUM is the checksum of the WORKING version of the conflicted
- file as of the time the conflicting operation was run (i.e. including
- local modifications).
- INCOMING_CHECKSUM is the checksum of the incoming file causing the
- conflict. ### is this needed for update? what about merge?
+ The ORIGINAL_PROPS, MINE_PROPS and THEIR_PROPS are hashes mapping a
+ const char * property name to a const svn_string_t* value.
- It is an error (### which one?) if no conflicting operation has been
- set on CONFLICT_SKEL before calling this function.
- It is an error (### which one?) if CONFLICT_SKEL already contains
- a text conflict.
+ The CONFLICTED_PROP_NAMES is a const char * property name value mapping
+ to "", recording which properties aren't resolved yet in the current
+ property values.
+ ### Needed for creating the marker file from this conflict data.
+ ### Would also allow per property marking as resolved.
+ ### Maybe useful for calling (legacy) conflict resolvers that expect one
+ ### property conflict per invocation.
+
+ It is an error to add another text conflict to a conflict skel that
+ already contains a text conflict.
Do temporary allocations in SCRATCH_POOL.
*/
svn_error_t *
-svn_wc__conflict_skel_add_text_conflict(
- svn_skel_t *conflict_skel,
- const svn_checksum_t *original_checksum,
- const svn_checksum_t *mine_checksum,
- const svn_checksum_t *incoming_checksum,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
+svn_wc__conflict_skel_add_prop_conflict(svn_skel_t *conflict_skel,
+ svn_wc__db_t *db,
+ const char *wri_abspath,
+ const char *marker_abspath,
+ apr_hash_t *original_props,
+ apr_hash_t *mine_props,
+ apr_hash_t *their_props,
+ apr_hash_t *conflicted_prop_names,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+
+/* Add a tree conflict to CONFLICT_SKEL.
+ Allocate data stored in the skel in RESULT_POOL.
+
+ LOCAL_CHANGE is the local tree change made to the node.
+ INCOMING_CHANGE is the incoming change made to the node.
+
+ It is an error to add another tree conflict to a conflict skel that
+ already contains a tree conflict.
+ ### Is it an error to add a tree conflict to any existing conflict?
+
+ Do temporary allocations in SCRATCH_POOL.
+*/
+svn_error_t *
+svn_wc__conflict_skel_add_tree_conflict(svn_skel_t *conflict_skel,
+ svn_wc_conflict_reason_t local_change,
+ svn_wc_conflict_action_t incoming_change,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+
+/*
+ * -----------------------------------------------------------
+ * Reading conflict skels. Maybe this can be made private later
+ * -----------------------------------------------------------
+ */
+
+/* Reads back the original data stored by svn_wc__conflict_add_prop_conflict()
+ * in CONFLICT_SKEL for a node in DB, WRI_ABSPATH.
+ *
+ * Values as documented for svn_wc__conflict_add_prop_conflict().
+ *
+ * Output arguments can be NULL if the value is not necessary
+ * Allocate the result in RESULT_POOL. Perform temporary allocations in
+ * SCRATCH_POOL.
+ */
+svn_error_t *
+svn_wc__conflict_read_prop_conflict(const char **marker_abspath,
+ apr_hash_t **original_props,
+ apr_hash_t **mine_props,
+ apr_hash_t **their_props,
+ apr_hash_t **conflicted_prop_names,
+ svn_wc__db_t *db,
+ const char *wri_abspath,
+ svn_skel_t *conflict_skel,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/* (Temporary) helper to create the (intermediate) data necessary for the
+ property marker workqueue data from the conflict skel */
+svn_error_t *
+svn_wc__conflict_create_property_marker_skel(svn_skel_t **marker_skel,
+ svn_skel_t *conflict_skel,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
+/* -----------------------------------------
+ * Intermediate property conflict skel store
+ */
+/* Return a new prop_conflict skel, allocated in RESULT_POOL. */
+svn_skel_t *
+svn_wc__prop_conflict_skel_new(apr_pool_t *result_pool);
/* Add a property conflict to SKEL.
@@ -182,7 +276,7 @@ svn_wc__conflict_skel_add_text_conflict(
temporary allocations in SCRATCH_POOL.
*/
svn_error_t *
-svn_wc__conflict_skel_add_prop_conflict(
+svn_wc__prop_conflict_skel_add(
svn_skel_t *skel,
const char *prop_name,
const svn_string_t *original_value,
@@ -193,89 +287,20 @@ svn_wc__conflict_skel_add_prop_conflict(
apr_pool_t *scratch_pool);
-/* Add a tree conflict to CONFLICT_SKEL.
- Allocate data stored in the skel in RESULT_POOL.
-
- LOCAL_CHANGE is the local tree change made to the node.
- ORIGINAL_LOCAL_KIND is the kind of the local node in BASE.
- If ORIGINAL_LOCAL_KIND is svn_node_file, ORIGINAL_CHECKSUM is the checksum
- for the BASE of the file, for retrieval from the pristine store.
-
- MINE_LOCAL_KIND is the kind of the local node in WORKING at the
- time the conflict was flagged.
- If MINE_LOCAL_KIND is svn_node_file, ORIGINAL_CHECKSUM is the checksum
- of the WORKING version of the file at the time the conflict was flagged,
- for retrieval from the pristine store.
-
- INCOMING_KIND is the kind of the incoming node.
- If INCOMING_KIND is svn_node_file, INCOMING_CHECKSUM is the checksum
- of the INCOMING version of the file, for retrieval from the pristine store.
-
- It is an error (### which one?) if no conflicting operation has been
- set on CONFLICT_SKEL before calling this function.
- It is an error (### which one?) if CONFLICT_SKEL already contains
- a tree conflict.
-
- Do temporary allocations in SCRATCH_POOL.
-*/
-svn_error_t *
-svn_wc__conflict_skel_add_tree_conflict(
- svn_skel_t *skel,
- svn_wc_conflict_reason_t local_change,
- svn_kind_t original_local_kind,
- const svn_checksum_t *original_checksum,
- svn_kind_t mine_local_kind,
- const svn_checksum_t *mine_checksum,
- svn_wc_conflict_action_t incoming_change,
- svn_kind_t incoming_kind,
- const svn_checksum_t *incoming_checksum,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-
-/* Add a reject conflict to CONFLICT_SKEL.
- Allocate data stored in the skel in RESULT_POOL.
-
- HUNK_ORIGINAL_OFFSET, HUNK_ORIGINAL_LENGTH, HUNK_MODIFIED_OFFSET,
- and HUNK_MODIFIED_LENGTH is hunk-header data identifying the hunk
- which was rejected.
+/* Call the interactive conflict resolver RESOLVER_FUNC with RESOLVER_BATON to
+ allow resolving the conflicts on LOCAL_ABSPATH.
- REJECT_DIFF_CHECKSUM is the checksum of the text of the rejected
- diff, for retrieval from the pristine store.
-
- It is an error (### which one?) if no conflicting operation has been
- set on CONFLICT_SKEL before calling this function.
- It is an error (### which one?) if CONFLICT_SKEL already contains
- a reject conflict for the hunk.
-
- Do temporary allocations in SCRATCH_POOL.
-*/
-svn_error_t *
-svn_wc__conflict_skel_add_reject_conflict(
- svn_skel_t *conflict_skel,
- svn_linenum_t hunk_original_offset,
- svn_linenum_t hunk_original_length,
- svn_linenum_t hunk_modified_offset,
- svn_linenum_t hunk_modified_length,
- const svn_checksum_t *reject_diff_checksum,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
-
-/* Add an obstruction conflict to CONFLICT_SKEL.
- Allocate data stored in the skel in RESULT_POOL.
-
- It is an error (### which one?) if no conflicting operation has been
- set on CONFLICT_SKEL before calling this function.
- It is an error (### which one?) if CONFLICT_SKEL already contains
- an obstruction.
-
- Do temporary allocations in SCRATCH_POOL.
-*/
+ CONFLICT_SKEL contains the details of the conflicts on LOCAL_ABSPATH.
+ Resolver actions are directly applied to the in-db state of LOCAL_ABSPATH,
+ so the conflict and the state in CONFLICT_SKEL must already be installed in
+ wc.db. */
svn_error_t *
-svn_wc__conflict_skel_add_obstruction(svn_skel_t *conflict_skel,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
+svn_wc__conflict_invoke_resolver(svn_wc__db_t *db,
+ const char *local_abspath,
+ svn_skel_t *conflict_skel,
+ svn_wc_conflict_resolver_func2_t *resolver_func,
+ void *resolver_baton,
+ apr_pool_t *scratch_pool);
/* Resolve text conflicts on the given node. */
Modified: subversion/trunk/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/props.c?rev=1354973&r1=1354972&r2=1354973&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/props.c (original)
+++ subversion/trunk/subversion/libsvn_wc/props.c Thu Jun 28 12:17:06 2012
@@ -1659,16 +1659,16 @@ svn_wc__merge_props(svn_skel_t **work_it
continue; /* skip to next incoming change */
if (conflict_skel == NULL)
- conflict_skel = svn_wc__conflict_skel_new(result_pool);
+ conflict_skel = svn_wc__prop_conflict_skel_new(result_pool);
- SVN_ERR(svn_wc__conflict_skel_add_prop_conflict(conflict_skel,
- propname,
- base_val,
- mine_val,
- to_val,
- from_val,
- result_pool,
- iterpool));
+ SVN_ERR(svn_wc__prop_conflict_skel_add(conflict_skel,
+ propname,
+ base_val,
+ mine_val,
+ to_val,
+ from_val,
+ result_pool,
+ iterpool));
}
} /* foreach propchange ... */
Re: svn commit: r1354973 - in /subversion/trunk/subversion/libsvn_wc:
conflicts.c conflicts.h props.c
Posted by Greg Stein <gs...@gmail.com>.
On Thu, Jun 28, 2012 at 12:57 PM, Greg Stein <gs...@gmail.com> wrote:
>...
>> + svn_wc__db_t *db,
>> + const char *wri_abspath,
>> + const char *marker_abspath,
>> + apr_hash_t *original_props,
>> + apr_hash_t *mine_props,
>> + apr_hash_t *their_props,
>> + apr_hash_t *conflicted_prop_names,
>> + apr_pool_t *result_pool,
>> + apr_pool_t *scratch_pool);
>
> As I mentioned in conflict-storage-2.0, there are four sets of
> properties. Do we just never generating the incoming-base properties?
Answering myself: yes, we already have the four property values. This
API and the storage should account for that.
(and should CONFLICTED_PROP_NAMES be an array of char* rather than a hash?)
Cheers,
-g
Re: svn commit: r1354973 - in /subversion/trunk/subversion/libsvn_wc:
conflicts.c conflicts.h props.c
Posted by Greg Stein <gs...@gmail.com>.
On Thu, Jun 28, 2012 at 8:17 AM, <rh...@apache.org> wrote:
>...
> +++ subversion/trunk/subversion/libsvn_wc/conflicts.h Thu Jun 28 12:17:06 2012
>...
> +/* Return a boolean in *COMPLETE indicating whether CONFLICT_SKEL contains
> + everything needed for installing in the working copy database.
> +
> + This typically checks if CONFLICT_SKEL contains at least one conflict
> + and an operation.
> +
> + Perform temporary allocations in SCRATCH_POOL
> + */
> +svn_error_t *
> +svn_wc__conflict_skel_is_complete(svn_boolean_t *complete,
> + svn_skel_t *conflict_skel,
> + apr_pool_t *scratch_pool);
const
Is that pool *really* necessary? I'm going to say "no", so drop it and
since this is a private API, we can easily add it if/when necessary.
> +
>
> /* Set 'update' as the conflicting operation in CONFLICT_SKEL.
> Allocate data stored in the skel in RESULT_POOL.
>
> - BASE_REVISION is the revision the node was at before the update.
> - TARGET_REVISION is the revision being updated to.
> + ORIGINAL specifies the BASE node before updating.
>
> - Do temporary allocations in SCRATCH_POOL. */
> + It is an error to set another operation to a conflict skel that
> + already has an operation.
> +
> + Do temporary allocations in SCRATCH_POOL. The new skel data is
> + completely stored in RESULT-POOL. */
> svn_error_t *
> svn_wc__conflict_skel_set_op_update(svn_skel_t *conflict_skel,
> - svn_revnum_t base_revision,
> - svn_revnum_t target_revision,
> + svn_wc_conflict_version_t *original,
> apr_pool_t *result_pool,
> apr_pool_t *scratch_pool);
const
Sense a pattern, yet? :-P
>
> @@ -74,91 +95,164 @@ svn_wc__conflict_skel_set_op_update(svn_
> /* Set 'switch' as the conflicting operation in CONFLICT_SKEL.
> Allocate data stored in the skel in RESULT_POOL.
>
> - BASE_REVISION is the revision the node was at before the switch.
> - TARGET_REVISION is the revision being switched to.
> - REPOS_RELPATH is the path being switched to, relative to the
> - repository root.
> + ORIGINAL specifies the BASE node before switching.
> +
> + It is an error to set another operation to a conflict skel that
> + already has an operation.
>
> Do temporary allocations in SCRATCH_POOL. */
> svn_error_t *
> svn_wc__conflict_skel_set_op_switch(svn_skel_t *conflict_skel,
> - svn_revnum_t base_revision,
> - svn_revnum_t target_revision,
> - const char *repos_relpath,
> + svn_wc_conflict_version_t *original,
> + apr_pool_t *result_pool,
> apr_pool_t *scratch_pool);
const
>
>
> /* Set 'merge' as conflicting operation in CONFLICT_SKEL.
> Allocate data stored in the skel in RESULT_POOL.
>
> - REPOS_UUID is the UUID of the repository accessed via REPOS_ROOT_URL.
> -
> - LEFT_REPOS_RELPATH and RIGHT_REPOS_RELPATH paths to the merge-left
> - and merge-right merge sources, relative to REPOS_URL
> + LEFT and RIGHT paths are the merge-left and merge-right merge
> + sources of the merge.
>
> - LEFT_REVISION is the merge-left revision.
> - RIGHT_REVISION is the merge-right revision.
> + It is an error to set another operation to a conflict skel that
> + already has an operation.
>
> Do temporary allocations in SCRATCH_POOL. */
> svn_error_t *
> svn_wc__conflict_skel_set_op_merge(svn_skel_t *conflict_skel,
> - const char *repos_uuid,
> - const char *repos_root_url,
> - svn_revnum_t left_revision,
> - const char *left_repos_relpath,
> - svn_revnum_t right_revision,
> - const char *right_repos_relpath,
> + svn_wc_conflict_version_t *left,
> + svn_wc_conflict_version_t *right,
> apr_pool_t *result_pool,
> apr_pool_t *scratch_pool);
double-const! :-)
>...
> + It is an error to add another text conflict to a conflict skel that
> + already contains a text conflict.
>
> Do temporary allocations in SCRATCH_POOL.
> */
> svn_error_t *
> -svn_wc__conflict_skel_add_text_conflict(
> - svn_skel_t *conflict_skel,
> - const svn_checksum_t *original_checksum,
> - const svn_checksum_t *mine_checksum,
> - const svn_checksum_t *incoming_checksum,
> - apr_pool_t *result_pool,
> - apr_pool_t *scratch_pool);
> +svn_wc__conflict_skel_add_prop_conflict(svn_skel_t *conflict_skel,
What's that part in the docstring about adding a text conflict? This
is adding a prop conflict.
> + svn_wc__db_t *db,
> + const char *wri_abspath,
> + const char *marker_abspath,
> + apr_hash_t *original_props,
> + apr_hash_t *mine_props,
> + apr_hash_t *their_props,
> + apr_hash_t *conflicted_prop_names,
> + apr_pool_t *result_pool,
> + apr_pool_t *scratch_pool);
As I mentioned in conflict-storage-2.0, there are four sets of
properties. Do we just never generating the incoming-base properties?
>...
> + * Output arguments can be NULL if the value is not necessary
> + * Allocate the result in RESULT_POOL. Perform temporary allocations in
> + * SCRATCH_POOL.
> + */
> +svn_error_t *
> +svn_wc__conflict_read_prop_conflict(const char **marker_abspath,
> + apr_hash_t **original_props,
> + apr_hash_t **mine_props,
> + apr_hash_t **their_props,
> + apr_hash_t **conflicted_prop_names,
> + svn_wc__db_t *db,
> + const char *wri_abspath,
> + svn_skel_t *conflict_skel,
> + apr_pool_t *result_pool,
> + apr_pool_t *scratch_pool);
const on CONFLICT_SKEL.
> +
> +/* (Temporary) helper to create the (intermediate) data necessary for the
> + property marker workqueue data from the conflict skel */
> +svn_error_t *
> +svn_wc__conflict_create_property_marker_skel(svn_skel_t **marker_skel,
> + svn_skel_t *conflict_skel,
> + apr_pool_t *result_pool,
> + apr_pool_t *scratch_pool);
const
>...
> +svn_wc__conflict_invoke_resolver(svn_wc__db_t *db,
> + const char *local_abspath,
> + svn_skel_t *conflict_skel,
> + svn_wc_conflict_resolver_func2_t *resolver_func,
> + void *resolver_baton,
> + apr_pool_t *scratch_pool);
const
>...
Cheers,
-g