On Wed, Oct 31, 2018 at 09:46:23AM +0000, Jonathan Guy wrote:
> Hi Stephan
> Thanks for the reply.
> I did see code section you refer to however the svn_client__resolve_conflicts 
> will only be called if you have ctx->conflict_func2.
> That function (AFAIK) is only installed if an “accept” option is supplied as 
> the code below
> 
> 
>   /* Install a legacy conflict handler if the --accept option was given.
>    * Else, svn_client_merge5() may abort the merge in an undesirable way.
>    * See the docstring at conflict_func_merge_cmd() for details */
>   if (opt_state->accept_which != svn_cl__accept_unspecified)
>     {
>       struct conflict_func_merge_cmd_baton *b = apr_pcalloc(pool, sizeof(*b));
> 
>       b->accept_which = opt_state->accept_which;
>       SVN_ERR(svn_dirent_get_absolute(&b->path_prefix, "", pool));
>       b->conflict_stats = conflict_stats;
> 
>       ctx->conflict_func2 = conflict_func_merge_cmd;
>       ctx->conflict_baton2 = b;
>     }
> 
> 
> The resolver that runs post run_merge is however run regardless if there is 
> an accept argument or not.
> If no accept option is given the user is ultimately prompted to resolve the 
> conflict (dry-run or no dry-run).
> 
> 
>   /* If we are in interactive mode and either the user gave no --accept
>    * option or the option did not apply, then prompt. */
>   if (option_id == svn_client_conflict_option_unspecified)
>     {
>       svn_boolean_t resolved = FALSE;
>       svn_boolean_t postponed = FALSE;
>       svn_boolean_t printed_description = FALSE;
>       svn_error_t *err;
> 
>       *quit = FALSE;
> 
>       while (!resolved && !postponed && !*quit)
>         {
>           err = resolve_conflict_interactively(&resolved, &postponed,
> 
> 
> Sorry I’m no trying to be argumentative I just need to clear on this one 
> aspect.
> Thanks for any help.

Can you provide an example? I cannot reproduce the problem like this:

$ svn merge ^/trunk
--- Merging r2 through r5 into '.':
   C alpha
A    alpha2
--- Recording mergeinfo for merge of r2 through r5 into '.':
 U   .
Summary of conflicts:
  Tree conflicts: 1
Searching tree conflict details for 'alpha' in repository:
Checking r4... done
Tree conflict on 'alpha':
File merged from
'^/trunk/alpha@1'
to
'^/trunk/alpha@5'
was moved to '^/trunk/alpha2' by stsp in r4.
A file which differs from the corresponding file on the merge source branch was 
found in the working copy.
Applying recommended resolution 'Move and merge':
C    alpha2
Tree conflict at 'alpha' marked as resolved.
Merge conflict discovered in file 'alpha2'.
Select: (p) Postpone, (df) Show diff, (e) Edit file, (m) Merge,
        (s) Show all options: q
Summary of conflicts:
  Text conflicts: 1 remaining (and 0 already resolved)
  Tree conflicts: 0 remaining (and 1 already resolved)
$ sv revert
$ pwd
/tmp/svn-sandbox/branch
$ svn revert -R .
Reverted '.'
Reverted 'alpha'
Reverted 'alpha2'
$ svn merge ^/trunk --dry-run
--- Merging r2 through r5 into '.':
   C alpha
A    alpha2
Summary of conflicts:
  Tree conflicts: 1
$


Reply via email to