Checkout
stsp
committed
on 20 Jan 17
Reintroduce the svn_client_conflict_walk() API.

This new implementation is based on the conflict walk we implemented in
the 'svn' command l… Show more
Reintroduce the svn_client_conflict_walk() API.

This new implementation is based on the conflict walk we implemented in

the 'svn' command line client. The command line client now relies on the

client library to walk conflicts in the working copy.

This avoids forcing other clients to reimplement the status walk logic which

is rather complex since it needs to handle new tree conflicts which may appear

when another tree conflict gets resolved. It should make the transtion to the

new conflict API easier for third party clients since the new resolver can now

be invoked in a similar way to the old libsvn_wc conflict handler.

Suggested by: ivan

(during the October 2016 hackathon in Berlin)

* subversion/include/svn_client.h

 (svn_client_conflict_walk_func_t, svn_client_conflict_walk): Declare.

* subversion/libsvn_client/conflicts.c

 (conflict_status_walker_baton, tree_conflict_collector,

  handle_tree_conflict_resolution_failure, conflict_status_walker,

  svn_client_conflict_walk): New implementation of a conflict status walker.

  Based on, and very similar to, code from svn/resolve-cmd.c.

* subversion/svn/cl.h,

 subversion/svn/conflict-callbacks.c

 (svn_cl__resolve_conflict): Remove now unused output paramer 'resolved',

  and redundant parameter config (ctx->config can be used instead).

* subversion/svn/resolve-cmd.c

 (conflict_status_walker_baton): Replace with...

 (conflict_walker_baton): ... this, which contains only a subset of the fields.

 (tree_conflict_collector, handle_tree_conflict_resolution_failure,

  conflict_status_walker, walk_conflicts): Remove.

 (conflict_walker): A callback for the new conflict walker.

 (svn_cl__walk_conflicts): Use the new conflict walker provided by the

  libsvn_client library instead of the previous inline implementation.

Show less