[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: wish for new API or extended one

From: Evgeny Kotkov <evgeny.kotkov_at_visualsvn.com>
Date: Wed, 8 Feb 2017 00:30:03 +0300

Stefan Sperling <stsp_at_elego.de> writes:

> I'm guessing that you are mixing up repository paths and working copy paths.
> Perhaps your expectation is that a repository-side path in the conflict
> description is changed by svn_client_conflict_option_set_moved_to_abspath()?
> If you do, then the API's behaviour will seem confusing indeed.

I think that the actual problem here is that calling the
svn_client_conflict_option_set_moved_to_repos_relpath() function
does not update the description (and the target path in the description
could have changed).

In other words, probably we're looking at something along these lines:

[[[
Index: subversion/include/svn_client.h
===================================================================
--- subversion/include/svn_client.h (revision 1782081)
+++ subversion/include/svn_client.h (working copy)
@@ -4495,6 +4495,7 @@ 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);

 /**
Index: subversion/libsvn_client/conflicts.c
===================================================================
--- subversion/libsvn_client/conflicts.c (revision 1782081)
+++ subversion/libsvn_client/conflicts.c (working copy)
@@ -9414,6 +9414,7 @@ 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)
 {
   svn_client_conflict_t *conflict = option->conflict;
@@ -9466,6 +9467,14 @@ svn_client_conflict_option_set_moved_to_repos_relp
       if (strcmp(move_target_repos_relpath, repos_relpath) == 0)
         {
           details->move_target_repos_relpath = repos_relpath;
+ /* Update option description. */
+ SVN_ERR(describe_incoming_move_merge_conflict_option(
+ &option->description,
+ conflict, ctx,
+ details,
+ conflict->pool,
+ scratch_pool));
+
           return SVN_NO_ERROR;
         }
     }
Index: subversion/svn/conflict-callbacks.c
===================================================================
--- subversion/svn/conflict-callbacks.c (revision 1782081)
+++ subversion/svn/conflict-callbacks.c (working copy)
@@ -1751,16 +1751,9 @@ handle_tree_conflict(svn_boolean_t *resolved,
           if (conflict_option)
             {
               SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath(
- conflict_option, preferred_move_target_idx, iterpool));
+ conflict_option, preferred_move_target_idx,
+ ctx, iterpool));

- /* Update option description. */
- SVN_ERR(build_tree_conflict_options(
- &tree_conflict_options,
- &possible_moved_to_repos_relpaths,
- &possible_moved_to_abspaths,
- NULL, conflict, ctx,
- scratch_pool, scratch_pool));
-
               /* Update conflict description. */
               SVN_ERR(svn_client_conflict_tree_get_description(
                        &incoming_change_description, &local_change_description,
]]]

Regards,
Evgeny Kotkov
Received on 2017-02-07 22:30:29 CET

This is an archived mail posted to the Subversion Dev mailing list.