Dealing with conflicted paths.
Client working copy management

## Typedefs

typedef struct svn_client_conflict_t | svn_client_conflict_t
| An opaque type which represents a conflicted node in the working copy. More...
typedef struct svn_client_conflict_option_t | svn_client_conflict_option_t
| An opaque type which represents a resolution option for a conflict. More...
typedef enum svn_client_conflict_option_id_t | svn_client_conflict_option_id_t
| A public enumeration of conflict option IDs. More...
typedef svn_error_t *(* | svn_client_conflict_walk_func_t) (void *baton, svn_client_conflict_t *conflict, apr_pool_t *scratch_pool)
| Callback for svn_client_conflict_conflict_walk();. More...

## Enumerations

enum

svn_client_conflict_option_id_t {
svn_client_conflict_option_undefined = -1 ,
svn_client_conflict_option_postpone = 0 ,
svn_client_conflict_option_base_text ,
svn_client_conflict_option_incoming_text ,
svn_client_conflict_option_working_text ,
svn_client_conflict_option_incoming_text_where_conflicted ,
svn_client_conflict_option_working_text_where_conflicted ,
svn_client_conflict_option_merged_text ,
svn_client_conflict_option_unspecified ,
svn_client_conflict_option_accept_current_wc_state ,
svn_client_conflict_option_update_move_destination ,
svn_client_conflict_option_update_any_moved_away_children ,
svn_client_conflict_option_incoming_add_ignore ,
svn_client_conflict_option_incoming_added_file_text_merge ,
svn_client_conflict_option_incoming_added_file_replace_and_merge ,
svn_client_conflict_option_incoming_added_dir_merge ,
svn_client_conflict_option_incoming_added_dir_replace ,
svn_client_conflict_option_incoming_added_dir_replace_and_merge ,
svn_client_conflict_option_incoming_delete_ignore ,
svn_client_conflict_option_incoming_delete_accept ,
svn_client_conflict_option_incoming_move_file_text_merge ,
svn_client_conflict_option_incoming_move_dir_merge ,
svn_client_conflict_option_local_move_file_text_merge ,
svn_client_conflict_option_local_move_dir_merge ,
svn_client_conflict_option_sibling_move_file_text_merge ,
svn_client_conflict_option_sibling_move_dir_merge ,
svn_client_conflict_option_both_moved_file_merge ,
svn_client_conflict_option_both_moved_file_move_merge ,
svn_client_conflict_option_both_moved_dir_merge ,
svn_client_conflict_option_both_moved_dir_move_merge
}

| A public enumeration of conflict option IDs. More...

## Functions

void | svn_client_conflict_option_set_merged_propval (svn_client_conflict_option_t *option, const svn_string_t *merged_propval)
| Set a merged property value on option to merged_propval. More...
svn_error_t * | svn_client_conflict_option_get_moved_to_repos_relpath_candidates2 (apr_array_header_t **possible_moved_to_repos_relpaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Get a list of possible repository paths which can be applied to option. More...
svn_error_t * | svn_client_conflict_option_get_moved_to_repos_relpath_candidates (apr_array_header_t **possible_moved_to_repos_relpaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Get a list of possible repository paths which can be applied to the svn_client_conflict_option_incoming_move_file_text_merge, or the svn_client_conflict_option_incoming_move_dir_merge resolution option. More...
svn_error_t * | svn_client_conflict_option_set_moved_to_repos_relpath2 (svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Set the preferred moved target repository path. More...
svn_error_t * | svn_client_conflict_option_set_moved_to_repos_relpath (svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except that in SVN 1.10 it raises an assertion failure if an option other than svn_client_conflict_option_incoming_move_file_text_merge or svn_client_conflict_option_incoming_move_dir_merge is passed. More...
svn_error_t * | svn_client_conflict_option_get_moved_to_abspath_candidates2 (apr_array_header_t **possible_moved_to_abspaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Get a list of possible moved-to abspaths in the working copy which can be applied to option. More...
svn_error_t * | svn_client_conflict_option_get_moved_to_abspath_candidates (apr_array_header_t **possible_moved_to_abspaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Get a list of possible moved-to abspaths in the working copy which can be svn_client_conflict_option_incoming_move_file_text_merge, or the svn_client_conflict_option_incoming_move_dir_merge resolution option. More...
svn_error_t * | svn_client_conflict_option_set_moved_to_abspath2 (svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Set the preferred moved target working copy path. More...
svn_error_t * | svn_client_conflict_option_set_moved_to_abspath (svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Like svn_client_conflict_option_set_moved_to_abspath2(), except that in SVN 1.10 this function raises an assertion failure if an option other than svn_client_conflict_option_incoming_move_file_text_merge or svn_client_conflict_option_incoming_move_dir_merge is passed. More...
svn_client_conflict_option_t * | svn_client_conflict_option_find_by_id (apr_array_header_t *options, svn_client_conflict_option_id_t option_id)
| Given an option_id, try to find the corresponding option in options, which is an array of svn_client_conflict_option_t * elements. More...
svn_error_t * | svn_client_conflict_get (svn_client_conflict_t **conflict, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return a conflict for the conflicted path local_abspath. More...
svn_error_t * | svn_client_conflict_walk (const char *local_abspath, svn_depth_t depth, svn_client_conflict_walk_func_t conflict_walk_func, void *conflict_walk_func_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Walk all conflicts within the specified depth of local_abspath. More...
svn_error_t * | svn_client_conflict_get_conflicted (svn_boolean_t *text_conflicted, apr_array_header_t **props_conflicted, svn_boolean_t *tree_conflicted, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Indicate the types of conflicts present on the working copy node described by conflict. More...
svn_error_t * | svn_client_conflict_prop_get_description (const char **description, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return a textual human-readable description of the property conflict described by conflict, allocated in result_pool. More...
svn_error_t * | svn_client_conflict_tree_get_description (const char **incoming_change_description, const char **local_change_description, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return a textual human-readable description of the tree conflict described by conflict, allocated in result_pool. More...
svn_error_t * | svn_client_conflict_text_get_resolution_options (apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to text conflicts described by conflict. More...
svn_error_t * | svn_client_conflict_prop_get_resolution_options (apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to property conflicts described by conflict. More...
svn_error_t * | svn_client_conflict_tree_get_resolution_options (apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to the tree conflict described by conflict. More...
svn_error_t * | svn_client_conflict_tree_get_details (svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Find more information about the tree conflict represented by conflict. More...
svn_client_conflict_option_id_t | svn_client_conflict_option_get_id (svn_client_conflict_option_t *option)
| Return an ID for option. More...
const char * | svn_client_conflict_option_get_label (svn_client_conflict_option_t *option, apr_pool_t *result_pool)
| Return a textual human-readable label of option, allocated in result_pool. More...
const char * | svn_client_conflict_option_get_description (svn_client_conflict_option_t *option, apr_pool_t *result_pool)
| Return a textual human-readable description of option, allocated in result_pool. More...
svn_client_conflict_option_id_t | svn_client_conflict_get_recommended_option_id (svn_client_conflict_t *conflict)
| Return the ID of the recommended resolution option. More...
const char * | svn_client_conflict_get_local_abspath (svn_client_conflict_t *conflict)
| Return the absolute path to the conflicted working copy node described by conflict. More...
svn_wc_operation_t | svn_client_conflict_get_operation (svn_client_conflict_t *conflict)
| Return the operation during which the conflict described by conflict was recorded. More...
svn_wc_conflict_action_t | svn_client_conflict_get_incoming_change (svn_client_conflict_t *conflict)
| Return the action an update, switch, or merge operation attempted to perform on the working copy node described by conflict. More...
svn_wc_conflict_reason_t | svn_client_conflict_get_local_change (svn_client_conflict_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. More...
svn_error_t * | svn_client_conflict_get_repos_info (const char **repos_root_url, const char **repos_uuid, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return information about the repository associated with conflict. More...
svn_error_t * | svn_client_conflict_get_incoming_old_repos_location (const char **incoming_old_repos_relpath, svn_revnum_t *incoming_old_regrev, svn_node_kind_t *incoming_old_node_kind, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return the repository-relative location and the node kind of the incoming old version of the conflicted node described by conflict. More...
svn_error_t * | svn_client_conflict_get_incoming_new_repos_location (const char **incoming_new_repos_relpath, svn_revnum_t *incoming_new_regrev, svn_node_kind_t *incoming_new_node_kind, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Like svn_client_conflict_get_incoming_old_repos_location(), expect this function returns the same data for the incoming new version. More...
svn_node_kind_t | svn_client_conflict_tree_get_victim_node_kind (svn_client_conflict_t *conflict)
| Return the node kind of the tree conflict victim described by conflict. More...
svn_error_t * | svn_client_conflict_tree_resolve (svn_client_conflict_t *conflict, svn_client_conflict_option_t *option, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Resolve a tree conflict using resolution option option. More...
svn_error_t * | svn_client_conflict_tree_resolve_by_id (svn_client_conflict_t *conflict, svn_client_conflict_option_id_t option_id, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Like svn_client_conflict_tree_resolve(), except that it identifies the desired resolution option by ID option_id. More...
svn_client_conflict_option_id_t | svn_client_conflict_tree_get_resolution (svn_client_conflict_t *conflict)
| Return the ID of the option this tree conflict has been resolved to. More...
const char * | svn_client_conflict_prop_get_reject_abspath (svn_client_conflict_t *conflict)
| Return the path to the legacy property conflicts reject file for the property conflicts represented by conflict. More...
svn_error_t * | svn_client_conflict_prop_get_propvals (const svn_string_t **base_propval, const svn_string_t **working_propval, const svn_string_t **incoming_old_propval, const svn_string_t **incoming_new_propval, svn_client_conflict_t *conflict, const char *propname, apr_pool_t *result_pool)
| Return the set of property values involved in the conflict of property PROPNAME described by conflict. More...
svn_error_t * | svn_client_conflict_prop_resolve (svn_client_conflict_t *conflict, const char *propname, svn_client_conflict_option_t *option, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Resolve a property conflict in property propname using resolution option option. More...
svn_error_t * | svn_client_conflict_prop_resolve_by_id (svn_client_conflict_t *conflict, const char *propname, svn_client_conflict_option_id_t option_id, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| If the provided option_id is the ID of an option which resolves conflict, resolve the property conflict in property propname using that option. More...
svn_client_conflict_option_id_t | svn_client_conflict_prop_get_resolution (svn_client_conflict_t *conflict, const char *propname)
| Return the ID of the option this property conflict in property propname has been resolved to. More...
const char * | svn_client_conflict_text_get_mime_type (svn_client_conflict_t *conflict)
| Return the MIME-type of the working version of the text-conflicted file described by conflict. More...
svn_error_t * | svn_client_conflict_text_get_contents (const char **base_abspath, const char **working_abspath, const char **incoming_old_abspath, const char **incoming_new_abspath, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return absolute paths to the versions of the text-conflicted file described by conflict. More...
svn_error_t * | svn_client_conflict_text_resolve (svn_client_conflict_t *conflict, svn_client_conflict_option_t *option, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| Resolve a text conflict using resolution option option. More...
svn_error_t * | svn_client_conflict_text_resolve_by_id (svn_client_conflict_t *conflict, svn_client_conflict_option_id_t option_id, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
| If the provided option_id is the ID of an option which resolves conflict, resolve the text conflict using that option. More...
svn_client_conflict_option_id_t | svn_client_conflict_text_get_resolution (svn_client_conflict_t *conflict)
| Return the ID of the option this text conflict has been resolved to. More...

## Detailed Description

## Typedef Documentation

## svn_client_conflict_option_id_t

typedef enum svn_client_conflict_option_id_t svn_client_conflict_option_id_t

A public enumeration of conflict option IDs.

Since
  New in 1.10, unless noted otherwise.

## svn_client_conflict_option_t

typedef struct svn_client_conflict_option_t svn_client_conflict_option_t

An opaque type which represents a resolution option for a conflict.

Since
  New in 1.10.

Definition at line 4553 of file svn_client.h.

## svn_client_conflict_t

typedef struct svn_client_conflict_t svn_client_conflict_t

An opaque type which represents a conflicted node in the working copy.

Since
  New in 1.10.

Definition at line 4553 of file svn_client.h.

## svn_client_conflict_walk_func_t

typedef svn_error_t*(* svn_client_conflict_walk_func_t) (void *baton, svn_client_conflict_t *conflict, apr_pool_t *scratch_pool)

Callback for svn_client_conflict_conflict_walk();.

The lifetime of conflict is limited. Its allocation in memory will not persist beyond this callback's execution.

Since
  New in 1.10.

Definition at line 4868 of file svn_client.h.

## Enumeration Type Documentation

## svn_client_conflict_option_id_t

enum svn_client_conflict_option_id_t

A public enumeration of conflict option IDs.

Since
  New in 1.10, unless noted otherwise.

Enumerator

svn_client_conflict_option_local_move_dir_merge

Since
  New in 1.11.

svn_client_conflict_option_sibling_move_file_text_merge

Since
  New in 1.11.

svn_client_conflict_option_sibling_move_dir_merge

Since
  New in 1.11.

Definition at line 4586 of file svn_client.h.

## Function Documentation

## svn_client_conflict_get()

svn_error_t* svn_client_conflict_get | ( | svn_client_conflict_t ** | conflict,
|  | const char * | local_abspath,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Return a conflict for the conflicted path local_abspath.

Since
  New in 1.10.

## svn_client_conflict_get_conflicted()

svn_error_t* svn_client_conflict_get_conflicted | ( | svn_boolean_t * | text_conflicted,
|  | apr_array_header_t ** | props_conflicted,
|  | svn_boolean_t * | tree_conflicted,
|  | svn_client_conflict_t * | conflict,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Indicate the types of conflicts present on the working copy node described by conflict.

Any output argument may be `NULL` if the caller is not interested in the status of a particular type.

The returned *props_conflicted array is allocated in result_pool. It contains the names of conflicted properties. If no property conflict exists, the array will contain no elements.

Since
  New in 1.10.

## svn_client_conflict_get_incoming_change()

svn_wc_conflict_action_t svn_client_conflict_get_incoming_change | ( | svn_client_conflict_t * | conflict | ) |

Return the action an update, switch, or merge operation attempted to perform on the working copy node described by conflict.

Since
  New in 1.10.

## svn_client_conflict_get_incoming_new_repos_location()

svn_error_t* svn_client_conflict_get_incoming_new_repos_location | ( | const char ** | incoming_new_repos_relpath,
|  | svn_revnum_t * | incoming_new_regrev,
|  | svn_node_kind_t * | incoming_new_node_kind,
|  | svn_client_conflict_t * | conflict,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Like svn_client_conflict_get_incoming_old_repos_location(), expect this function returns the same data for the incoming new version.

The same note about tree conflicts applies.

Since
  New in 1.10.

## svn_client_conflict_get_incoming_old_repos_location()

svn_error_t* svn_client_conflict_get_incoming_old_repos_location | ( | const char ** | incoming_old_repos_relpath,
|  | svn_revnum_t * | incoming_old_regrev,
|  | svn_node_kind_t * | incoming_old_node_kind,
|  | svn_client_conflict_t * | conflict,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Return the repository-relative location and the node kind of the incoming old version of the conflicted node described by conflict.

If the repository-relative path is not available, the *incoming_old_repos_relpath will be set to `NULL`,

If the peg revision is not available, *incoming_old_regrev will be set to SVN_INVALID_REVNUM.

If the node kind is not available or if the node does not exist at the specified path and revision, *incoming_old_node_kind will be set to svn_node_none.

### Should return svn_node_unkown if not available?

Any output parameter may be set to `NULL` by the caller to indicate that a particular piece of information should not be returned.

In case of tree conflicts, this "path@revision" does not necessarily exist in the repository, and it does not necessarily represent the incoming change which is responsible for the occurance of the tree conflict. The responsible incoming change is generally located somewhere between the old and new incoming versions.

Since
  New in 1.10.

## svn_client_conflict_get_local_abspath()

const char* svn_client_conflict_get_local_abspath | ( | svn_client_conflict_t * | conflict | ) |

Return the absolute path to the conflicted working copy node described by conflict.

Since
  New in 1.10.

## svn_client_conflict_get_local_change()

svn_wc_conflict_reason_t svn_client_conflict_get_local_change | ( | svn_client_conflict_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_client_conflict_get_operation()

svn_wc_operation_t svn_client_conflict_get_operation | ( | svn_client_conflict_t * | conflict | ) |

Return the operation during which the conflict described by conflict was recorded.

Since
  New in 1.10.

## svn_client_conflict_get_recommended_option_id()

svn_client_conflict_option_id_t svn_client_conflict_get_recommended_option_id | ( | svn_client_conflict_t * | conflict | ) |

Return the ID of the recommended resolution option.

If no specific option is recommended, return `svn_client_conflict_option_unspecified`;

Client implementations which aim to avoid excessive interactive prompting may wish to try a recommended resolution option before falling back to asking the user which option to use.

Conflict resolution with a recommended option is not guaranteed to succeed. Clients should check for errors when trying to resolve a conflict and fall back to other options and/or interactive prompting when the recommended option fails to resolve a conflict.

If conflict is a tree conflict, svn_client_conflict_tree_get_details() should be called before this function to allow for useful recommendations.

Since
  New in 1.10.

## svn_client_conflict_get_repos_info()

svn_error_t* svn_client_conflict_get_repos_info | ( | const char ** | repos_root_url,
|  | const char ** | repos_uuid,
|  | svn_client_conflict_t * | conflict,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Return information about the repository associated with conflict.

In case of a foreign-repository merge this will differ from the repository information associated with the merge target working copy.

Since
  New in 1.10.

## svn_client_conflict_option_find_by_id()

svn_client_conflict_option_t* svn_client_conflict_option_find_by_id | ( | apr_array_header_t * | options,
|  | svn_client_conflict_option_id_t | option_id
| ) |  |

Given an option_id, try to find the corresponding option in options, which is an array of svn_client_conflict_option_t * elements.

Return NULL if no corresponding option can be be found.

Since
  New in 1.10.

## svn_client_conflict_option_get_description()

const char* svn_client_conflict_option_get_description | ( | svn_client_conflict_option_t * | option,
|  | apr_pool_t * | result_pool
| ) |  |

Return a textual human-readable description of option, allocated in result_pool.

The description is encoded in UTF-8 and may contain multiple lines separated by `APR_EOL_STR`.

Additionally, the description may be localized to the language used by the current locale.

Since
  New in 1.10.

## svn_client_conflict_option_get_id()

svn_client_conflict_option_id_t svn_client_conflict_option_get_id | ( | svn_client_conflict_option_t * | option | ) |

Return an ID for option.

This ID can be used by callers to associate arbitrary data with a particular conflict resolution option.

The ID of a particular resolution option will never change in future revisions of this API.

Since
  New in 1.10.

## svn_client_conflict_option_get_label()

const char* svn_client_conflict_option_get_label | ( | svn_client_conflict_option_t * | option,
|  | apr_pool_t * | result_pool
| ) |  |

Return a textual human-readable label of option, allocated in result_pool.

The label is encoded in UTF-8 and usually contains up to three words.

Additionally, the label may be localized to the language used by the current locale.

Since
  New in 1.10.

## svn_client_conflict_option_get_moved_to_abspath_candidates()

svn_error_t* svn_client_conflict_option_get_moved_to_abspath_candidates | ( | apr_array_header_t ** | possible_moved_to_abspaths,
|  | svn_client_conflict_option_t * | option,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Get a list of possible moved-to abspaths in the working copy which can be svn_client_conflict_option_incoming_move_file_text_merge, or the svn_client_conflict_option_incoming_move_dir_merge resolution option.

In SVN 1.10, if a different option is passed in, this function will raise an assertion failure. Otherwise this function behaves just like svn_client_conflict_option_get_moved_to_abspath_candidates2().

Since
  New in 1.10.

Deprecated:
  use svn_client_conflict_option_get_moved_to_abspath_candidates2()

## svn_client_conflict_option_get_moved_to_abspath_candidates2()

svn_error_t* svn_client_conflict_option_get_moved_to_abspath_candidates2 | ( | apr_array_header_t ** | possible_moved_to_abspaths,
|  | svn_client_conflict_option_t * | option,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Get a list of possible moved-to abspaths in the working copy which can be applied to option.

All working copy paths in the returned list correspond to one repository path which is be one of the possible destinations of a move operation. More than one repository-side move target candidate may exist; call svn_client_conflict_option_get_moved_to_repos_relpath_candidates() before calling this function to let the user select a repository path first. Otherwise, one of the repository-side paths will be selected internally.

*possible_moved_to_abspaths is set to NULL if the option does not support multiple move targets. API users may assume that only one option among those which can be applied to a conflict supports move targets.

If no possible moved-to paths can be found, return an empty array. This doesn't mean that no move happened in the repository. It is possible that the move destination is outside the scope of the current working copy, for example, in which case the conflict must be resolved in some other way.

See also
  svn_client_conflict_option_set_moved_to_abspath2()

Since
  New in 1.11.

## svn_client_conflict_option_get_moved_to_repos_relpath_candidates()

svn_error_t* svn_client_conflict_option_get_moved_to_repos_relpath_candidates | ( | apr_array_header_t ** | possible_moved_to_repos_relpaths,
|  | svn_client_conflict_option_t * | option,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Get a list of possible repository paths which can be applied to the svn_client_conflict_option_incoming_move_file_text_merge, or the svn_client_conflict_option_incoming_move_dir_merge resolution option.

In SVN 1.10, if a different option is passed in, this function will raise an assertion failure. Otherwise this function behaves just like svn_client_conflict_option_get_moved_to_repos_relpath_candidates2().

Since
  New in 1.10.

Deprecated:
  use svn_client_conflict_option_get_moved_to_repos_relpath_candidates2()

## svn_client_conflict_option_get_moved_to_repos_relpath_candidates2()

svn_error_t* svn_client_conflict_option_get_moved_to_repos_relpath_candidates2 | ( | apr_array_header_t ** | possible_moved_to_repos_relpaths,
|  | svn_client_conflict_option_t * | option,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Get a list of possible repository paths which can be applied to option.

In some situations, there can be multiple possible destinations for a move. One such situation is where a file was copied and moved in the same revision: svn cp a b; svn mv a c; svn commit When this move is merged elsewhere, both b and c will appear as valid move destinations to the conflict resolver. To resolve such ambiguity, the client may call this function to obtain a list of possible destinations the user may choose from.

*possible_moved_to_repos_relpaths is set to NULL if the option does not support multiple move targets. API users may assume that only one option among those which can be applied to a conflict supports move targets.

The array is allocated in result_pool and will have "const char *" elements pointing to strings also allocated in result_pool. All paths are relpaths, and relative to the repository root.

See also
  svn_client_conflict_option_set_moved_to_repos_relpath2()

Since
  New in 1.11.

## svn_client_conflict_option_set_merged_propval()

void svn_client_conflict_option_set_merged_propval | ( | svn_client_conflict_option_t * | option,
|  | const svn_string_t * | merged_propval
| ) |  |

Set a merged property value on option to merged_propval.

Setting the merged value is required before resolving the property conflict using an option with ID svn_client_conflict_option_merged_text.

The contents of merged_propval are not copied, so the storage it points to needs to remain valid until svn_client_conflict_prop_resolve() has been called with option.

Since
  New in 1.10.

## svn_client_conflict_option_set_moved_to_abspath()

svn_error_t* svn_client_conflict_option_set_moved_to_abspath | ( | svn_client_conflict_option_t * | option,
|  | int | preferred_move_target_idx,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Like svn_client_conflict_option_set_moved_to_abspath2(), except that in SVN 1.10 this function raises an assertion failure if an option other than svn_client_conflict_option_incoming_move_file_text_merge or svn_client_conflict_option_incoming_move_dir_merge is passed.

Since
  New in 1.10.

Deprecated:
  use svn_client_conflict_option_set_moved_to_abspath2()

## svn_client_conflict_option_set_moved_to_abspath2()

svn_error_t* svn_client_conflict_option_set_moved_to_abspath2 | ( | svn_client_conflict_option_t * | option,
|  | int | preferred_move_target_idx,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Set the preferred moved target working copy path.

If option is not applicable to a moved target working copy path, do nothing.

preferred_move_target_idx must be a valid index into the list returned by svn_client_conflict_option_get_moved_to_abspath_candidates2().

This function can be called multiple times. It affects the output of svn_client_conflict_tree_get_description() and svn_client_conflict_option_get_description(). Call these functions again to get updated descriptions containing the newly selected move target.

Since
  New in 1.11.

## svn_client_conflict_option_set_moved_to_repos_relpath()

svn_error_t* svn_client_conflict_option_set_moved_to_repos_relpath | ( | svn_client_conflict_option_t * | option,
|  | int | preferred_move_target_idx,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except that in SVN 1.10 it raises an assertion failure if an option other than svn_client_conflict_option_incoming_move_file_text_merge or svn_client_conflict_option_incoming_move_dir_merge is passed.

Since
  New in 1.10.

Deprecated:
  use svn_client_conflict_option_set_moved_to_repos_relpath2()

## svn_client_conflict_option_set_moved_to_repos_relpath2()

svn_error_t* svn_client_conflict_option_set_moved_to_repos_relpath2 | ( | svn_client_conflict_option_t * | option,
|  | int | preferred_move_target_idx,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Set the preferred moved target repository path.

If option is not applicable to a moved target repository path, do nothing.

preferred_move_target_idx must be a valid index into the list returned by svn_client_conflict_option_get_moved_to_repos_relpath_candidates().

This function can be called multiple times. It affects the output of svn_client_conflict_tree_get_description() and svn_client_conflict_option_get_description(). Call these functions again to get updated descriptions containing the newly selected move target.

Since
  New in 1.11.

## svn_client_conflict_prop_get_description()

svn_error_t* svn_client_conflict_prop_get_description | ( | const char ** | description,
|  | svn_client_conflict_t * | conflict,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Return a textual human-readable description of the property conflict described by conflict, allocated in result_pool.

The description is encoded in UTF-8 and may contain multiple lines separated by `APR_EOL_STR`. The last line is not terminated by a newline.

Additionally, the description may be localized to the language used by the current locale.

Since
  New in 1.10.

## svn_client_conflict_prop_get_propvals()

svn_error_t* svn_client_conflict_prop_get_propvals | ( | const svn_string_t ** | base_propval,
|  | const svn_string_t ** | working_propval,
|  | const svn_string_t ** | incoming_old_propval,
|  | const svn_string_t ** | incoming_new_propval,
|  | svn_client_conflict_t * | conflict,
|  | const char * | propname,
|  | apr_pool_t * | result_pool
| ) |  |

Return the set of property values involved in the conflict of property PROPNAME described by conflict.

If a property value is unavailable the corresponding output argument is set to `NULL`.

A 3-way diff of these property values can be generated with svn_diff_mem_string_diff3(). A merged version with conflict markers can be generated with svn_diff_mem_string_output_merge3().

Since
  New in 1.10.

## svn_client_conflict_prop_get_reject_abspath()

const char* svn_client_conflict_prop_get_reject_abspath | ( | svn_client_conflict_t * | conflict | ) |

Return the path to the legacy property conflicts reject file for the property conflicts represented by conflict.

This function exists for backwards compatibility only and should not be used in new code.

Since
  New in 1.10.

## svn_client_conflict_prop_get_resolution()

svn_client_conflict_option_id_t svn_client_conflict_prop_get_resolution | ( | svn_client_conflict_t * | conflict,
|  | const char * | propname
| ) |  |

Return the ID of the option this property conflict in property propname has been resolved to.

If the conflict has not been resolved yet, then return `svn_client_conflict_option_unspecified`.

Since
  New in 1.10.

## svn_client_conflict_prop_get_resolution_options()

svn_error_t* svn_client_conflict_prop_get_resolution_options | ( | apr_array_header_t ** | options,
|  | svn_client_conflict_t * | conflict,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to property conflicts described by conflict.

Since
  New in 1.10.

## svn_client_conflict_prop_resolve()

svn_error_t* svn_client_conflict_prop_resolve | ( | svn_client_conflict_t * | conflict,
|  | const char * | propname,
|  | svn_client_conflict_option_t * | option,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Resolve a property conflict in property propname using resolution option option.

To resolve all properties to the same option at once, set propname to the empty string "".

Since
  New in 1.10.

## svn_client_conflict_prop_resolve_by_id()

svn_error_t* svn_client_conflict_prop_resolve_by_id | ( | svn_client_conflict_t * | conflict,
|  | const char * | propname,
|  | svn_client_conflict_option_id_t | option_id,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

If the provided option_id is the ID of an option which resolves conflict, resolve the property conflict in property propname using that option.

Else, return `SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE`.

Since
  New in 1.10.

## svn_client_conflict_text_get_contents()

svn_error_t* svn_client_conflict_text_get_contents | ( | const char ** | base_abspath,
|  | const char ** | working_abspath,
|  | const char ** | incoming_old_abspath,
|  | const char ** | incoming_new_abspath,
|  | svn_client_conflict_t * | conflict,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Return absolute paths to the versions of the text-conflicted file described by conflict.

If a particular content is not available, it is set to `NULL`.

### Should this be returning svn_stream_t instead of paths?

Since
  : New in 1.10.

## svn_client_conflict_text_get_mime_type()

const char* svn_client_conflict_text_get_mime_type | ( | svn_client_conflict_t * | conflict | ) |

Return the MIME-type of the working version of the text-conflicted file described by conflict.

### Really needed? What about base/incoming_old/incoming_new values?

Since
  : New in 1.10.

## svn_client_conflict_text_get_resolution()

svn_client_conflict_option_id_t svn_client_conflict_text_get_resolution | ( | svn_client_conflict_t * | conflict | ) |

Return the ID of the option this text conflict has been resolved to.

If the conflict has not been resolved yet, then return `svn_client_conflict_option_unspecified`.

Since
  New in 1.10.

## svn_client_conflict_text_get_resolution_options()

svn_error_t* svn_client_conflict_text_get_resolution_options | ( | apr_array_header_t ** | options,
|  | svn_client_conflict_t * | conflict,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to text conflicts described by conflict.

Since
  New in 1.10.

## svn_client_conflict_text_resolve()

svn_error_t* svn_client_conflict_text_resolve | ( | svn_client_conflict_t * | conflict,
|  | svn_client_conflict_option_t * | option,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Resolve a text conflict using resolution option option.

Since
  New in 1.10.

## svn_client_conflict_text_resolve_by_id()

svn_error_t* svn_client_conflict_text_resolve_by_id | ( | svn_client_conflict_t * | conflict,
|  | svn_client_conflict_option_id_t | option_id,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

If the provided option_id is the ID of an option which resolves conflict, resolve the text conflict using that option.

Else, return `SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE`.

Since
  New in 1.10.

## svn_client_conflict_tree_get_description()

svn_error_t* svn_client_conflict_tree_get_description | ( | const char ** | incoming_change_description,
|  | const char ** | local_change_description,
|  | svn_client_conflict_t * | conflict,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Return a textual human-readable description of the tree conflict described by conflict, allocated in result_pool.

The description is encoded in UTF-8 and may contain multiple lines separated by `APR_EOL_STR`. The last line is not terminated by a newline.

Additionally, the description may be localized to the language used by the current locale.

While client implementors are free to enhance descriptions by adding additional information to the text, or break up very long lines for formatting purposes, there is no syntax defined for descriptions, and implementors should not rely on any particular parts of descriptions to remain stable over time, apart from what is stated below. Descriptions may or may not form complete sentences. They may contain paths relative to the repository root; such paths always start with "^/", and end with either a peg revision (e.g. "@100") or a colon followed by a range of revisions (as in svn:mergeinfo, e.g. ":100-200"). Paths may appear on a line of their own to avoid overlong lines. Any revision numbers mentioned elsewhere in the description are prefixed with the letter 'r' (e.g. "r99").

The description has two parts: One part describes the "incoming change" applied by an update, merge, or switch operation. The other part describes the "local change" which occurred in the working copy or perhaps in the history of a merge target branch. Both parts are provided independently to allow for some flexibility when displaying the description. As a convention, displaying the "incoming change" first and the "local change" second is recommended.

By default, the description is based only on information available in the working copy. If svn_client_conflict_tree_get_details() was already called for conflict, the description might also contain useful information obtained from the repository and provide for a much better user experience.

Since
  New in 1.10.

## svn_client_conflict_tree_get_details()

svn_error_t* svn_client_conflict_tree_get_details | ( | svn_client_conflict_t * | conflict,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Find more information about the tree conflict represented by conflict.

A call to svn_client_conflict_tree_get_description() may yield much better results after this function has been called.

A call to svn_client_conflict_tree_get_resolution_options() may provide more useful resolution options if this function has been called.

This function may contact the repository. Use the authentication baton cached in ctx for authentication if contacting the repository.

Since
  New in 1.10.

## svn_client_conflict_tree_get_resolution()

svn_client_conflict_option_id_t svn_client_conflict_tree_get_resolution | ( | svn_client_conflict_t * | conflict | ) |

Return the ID of the option this tree conflict has been resolved to.

If the conflict has not been resolved yet, then return `svn_client_conflict_option_unspecified`.

Since
  New in 1.10.

## svn_client_conflict_tree_get_resolution_options()

svn_error_t* svn_client_conflict_tree_get_resolution_options | ( | apr_array_header_t ** | options,
|  | svn_client_conflict_t * | conflict,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to the tree conflict described by conflict.

By default, the list of options is based only on information available in the working copy. If svn_client_conflict_tree_get_details() was already called for conflict, a more useful list of options might be returned.

Since
  New in 1.10.

## svn_client_conflict_tree_get_victim_node_kind()

svn_node_kind_t svn_client_conflict_tree_get_victim_node_kind | ( | svn_client_conflict_t * | conflict | ) |

Return the node kind of the tree conflict victim described by conflict.

The victim is the local node in the working copy which was affected by the tree conflict at the time the conflict was raised.

Since
  New in 1.10.

## svn_client_conflict_tree_resolve()

svn_error_t* svn_client_conflict_tree_resolve | ( | svn_client_conflict_t * | conflict,
|  | svn_client_conflict_option_t * | option,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Resolve a tree conflict using resolution option option.

May raise an error in case the tree conflict cannot be resolved yet, for instance `SVN_ERR_WC_OBSTRUCTED_UPDATE`, `SVN_ERR_WC_FOUND_CONFLICT`, or `SVN_ERR_WC_CONFLICT_RESOLVER_FAILUE`. This may happen when other tree conflicts, or unversioned obstructions, block the resolution of this tree conflict. In such a case the other conflicts should be resolved first and resolution of this conflict should be attempted again later.

Since
  New in 1.10.

## svn_client_conflict_tree_resolve_by_id()

svn_error_t* svn_client_conflict_tree_resolve_by_id | ( | svn_client_conflict_t * | conflict,
|  | svn_client_conflict_option_id_t | option_id,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Like svn_client_conflict_tree_resolve(), except that it identifies the desired resolution option by ID option_id.

If the provided option_id is the ID of an option which resolves conflict, try to resolve the tree conflict using that option. Else, return `SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE`.

Since
  New in 1.10.

## svn_client_conflict_walk()

svn_error_t* svn_client_conflict_walk | ( | const char * | local_abspath,
|  | svn_depth_t | depth,
|  | svn_client_conflict_walk_func_t | conflict_walk_func,
|  | void * | conflict_walk_func_baton,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Walk all conflicts within the specified depth of local_abspath.

Pass each conflict found during the walk to the conflict_walk_func callback, along with conflict_walk_func_baton. Use cancellation and notification support provided by client context ctx.

This callback may choose to resolve the conflict. If the act of resolving a conflict creates new conflicts within the walked working copy (as might be the case for some tree conflicts), the callback will be invoked for each such new conflict as well.

Since
  New in 1.10.