You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2017/02/18 11:58:39 UTC
svn commit: r1783522 - /subversion/trunk/subversion/svn/conflict-callbacks.c
Author: stsp
Date: Sat Feb 18 11:58:38 2017
New Revision: 1783522
URL: http://svn.apache.org/viewvc?rev=1783522&view=rev
Log:
Make 'svn resolve' warn about ambiguous moves at the conflict prompt.
* subversion/svn/conflict-callbacks.c
(handle_tree_conflict): If ambiguous move destinations exist in the
repository and/or working copy, print an extra line above the conflict
prompt which tells users how they can resolve such ambiguities.
Modified:
subversion/trunk/subversion/svn/conflict-callbacks.c
Modified: subversion/trunk/subversion/svn/conflict-callbacks.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/conflict-callbacks.c?rev=1783522&r1=1783521&r2=1783522&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/conflict-callbacks.c (original)
+++ subversion/trunk/subversion/svn/conflict-callbacks.c Sat Feb 18 11:58:38 2017
@@ -1693,6 +1693,8 @@ handle_tree_conflict(svn_boolean_t *reso
apr_array_header_t *possible_moved_to_abspaths;
svn_boolean_t all_options_are_dumb;
const struct client_option_t *recommended_option;
+ svn_boolean_t repos_move_target_chosen = FALSE;
+ svn_boolean_t wc_move_target_chosen = FALSE;
option_id = svn_client_conflict_option_unspecified;
local_abspath = svn_client_conflict_get_local_abspath(conflict);
@@ -1756,7 +1758,7 @@ handle_tree_conflict(svn_boolean_t *reso
_("\nSubversion is not smart enough to resolve "
"this tree conflict automatically!\nSee 'svn "
"help resolve' for more information.\n\n")));
-
+
iterpool = svn_pool_create(scratch_pool);
while (1)
{
@@ -1764,6 +1766,18 @@ handle_tree_conflict(svn_boolean_t *reso
svn_pool_clear(iterpool);
+ if (!repos_move_target_chosen &&
+ possible_moved_to_repos_relpaths &&
+ possible_moved_to_repos_relpaths->nelts > 1)
+ SVN_ERR(svn_cmdline_printf(scratch_pool,
+ _("Ambiguous move destinations exist in the repository; "
+ "try the 'd' option\n")));
+ if (!wc_move_target_chosen && possible_moved_to_abspaths &&
+ possible_moved_to_abspaths->nelts > 1)
+ SVN_ERR(svn_cmdline_printf(scratch_pool,
+ _("Ambiguous move destinations exist in the working copy; "
+ "try the 'w' option\n")));
+
SVN_ERR(prompt_user(&opt, tree_conflict_options, NULL,
conflict_description, pb, iterpool));
*printed_description = TRUE;
@@ -1809,6 +1823,8 @@ handle_tree_conflict(svn_boolean_t *reso
SVN_ERR(svn_client_conflict_option_set_moved_to_repos_relpath(
conflict_option, preferred_move_target_idx,
ctx, iterpool));
+ repos_move_target_chosen = TRUE;
+ wc_move_target_chosen = FALSE;
/* Update option description. */
SVN_ERR(build_tree_conflict_options(
@@ -1858,7 +1874,9 @@ handle_tree_conflict(svn_boolean_t *reso
if (conflict_option)
{
SVN_ERR(svn_client_conflict_option_set_moved_to_abspath(
- conflict_option, preferred_move_target_idx, ctx, iterpool));
+ conflict_option, preferred_move_target_idx, ctx,
+ iterpool));
+ wc_move_target_chosen = TRUE;
/* Update option description. */
SVN_ERR(build_tree_conflict_options(