Checkout Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Skip interactive conflict resolution after a dry-run merge.

The resolver will find that it has nothing to do in dry-run mode because

no new conflicts were recorded. So running it is a pointless exercise.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Suppress the interactive conflict resolver

if a merge has been performed with the dry-run option.

Patch by: Jonathan Guy <jonathan.guy at ikoder.com>

Make svn --non-interactive use recommended tree conflict resolution

options by default. Previously, it would postpone such conflicts.

This mode is not yet exposed as a separate --accept option argument.

Perhaps we will do that later.

* subversion/svn/cl.h

(svn_cl__accept_recommended): Declare.

* subversion/svn/conflict-callbacks.c

(svn_cl__resolve_conflict): Add support for svn_cl__accept_recommended.

* subversion/svn/merge-cmd.c

(conflict_func_merge_cmd): Add svn_cl__accept_recommended to the switch

statement (as an invalid option to use in this context).

* subversion/svn/svn.c

(sub_main): Default to svn_cl__accept_recommended if --non-interactive.

  1. … 3 more files in changeset.
* subversion/svn/merge-cmd.c

(svn_cl__merge): If a merge failed due to conflicts, and all conflicts

get resolved by the conflict resolver, rerun the same merge to continue

merging outstanding changes. Regression from 1.9.

This is a bit of an ugly hack (it uses 'goto') but at least restores the

desired behaviour. It can be prettified later on.

Remove two hacks from the conflict resolver API that were added to

allow handling --accept=mine-conflict | working for tree conflicts

and --accept=working for binary text conflicts.

This patch makes the command-line client fully responsible for choosing

the appropriate conflict option id, and keeps the various new APIs

such as svn_client_conflict_text_resolve_by_id() simple and doing

just what they were told to do.

Discussed in https://lists.apache.org/thread.html/de7fc6bdbd100ad2fa89d04e336fd64f8d77f66730ae2806ded1293b@%3Cdev.subversion.apache.org%3E

* subversion/libsvn_client/conflicts.c

(svn_client_conflict_text_resolve_by_id,

svn_client_conflict_tree_resolve_by_id): Remove hacks from these

functions.

* subversion/svn/conflict-callbacks.c

(resolve_conflict_by_accept_option): Inline parts of this function that

handle svn_cl__accept_edit and svn_cl__accept_launch ...

(svn_cl__resolve_conflict): ...here. Accept svn_cl__accept_t by value,

drop the option id argument. Pick the appropriate option id based on

the passed-in svn_cl__accept_t argument. Prompt the user if there is

no option or if the option did not apply.

* subversion/svn/resolve-cmd.c

(svn_cl__resolve): Handle unsupported --accept [--non-interactive] cases

in this function.

(svn_cl__walk_conflicts): Remove the is_resolve_cmd argument. Don't

map the --accept option to option id here, as we will do it in the

svn_cl__resolve_conflict() function. Adjust calls to walk_conflicts()

and svn_cl__resolve_conflict().

(walk_conflicts): Remove option_id argument, accept svn_cl__accept_t

by value.

(conflict_status_walker): Adjust call to svn_cl__resolve_conflict().

(conflict_status_walker_baton): Remove option_id field, store

accept_which field by value.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Adjust call to svn_cl__walk_conflicts().

* subversion/svn/switch-cmd.c

(svn_cl__switch): Adjust call to svn_cl__walk_conflicts().

* subversion/svn/update-cmd.c

(svn_cl__update): Adjust call to svn_cl__walk_conflicts().

* subversion/svn/cl.h

(svn_cl__resolve_conflict, svn_cl__walk_conflicts): Update declarations.

  1. … 6 more files in changeset.
Fix issue #4652 in a different way. r1758069 fixed it in libsvn_subr but as

Ivan Zhakov points out the root cause of the problem is that 'svn merge'

passes in invalid data to svn_client_merge5().

* subversion/svn/merge-cmd.c

(run_merge): If the merge target path is a URL, return an error message.

Allocate the baton for 'svn merge --accept' conflict callback in the pool,

instead of using a pointer to stack.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Allocate struct conflict_func_merge_cmd_baton in the

pool. Otherwise, the ctx->conflict_baton2 pointer becomes dangling

when the stack variable falls out of scope.

Remove the svn_cl__conflict_func_interactive() callback.

The command line client will now start the conflict resolver by itself if

an update, merge, or switch operation flags conflicts in the working copy.

Before this commit it was relying on the libraries to do so. This finally

gives full control over conflict resolution to the client and paves the

way for future enhancements of the conflict resolver.

Only one use case of the libsvn_wc conflict callback remains. This is

required for supporting 'svn merge --accept' during merges which perform

multiple editor drives. A better solution would be changing the

svn_client_merge API to allow the client to get away without the conflict

callback. I've left this for future work.

* subversion/svn/cl.h

(svn_cl__conflict_stats_get_paths): Declare this new function which is

involved in keeping existing conflict resolution behaviour intact.

The client already records newly conflicted paths as part of conflict

accounting. We use this list of paths to run the conflict resolver on

the newly conflicted paths only, rather than running it over the entire

working copy as 'svn resolve' would do.

(svn_cl__get_conflict_func_interactive_baton,

svn_cl__conflict_func_interactive): Remove declaration. Now unused.

(svn_cl__walk_conflicts): Declare this new function which makes the

working copy walker logic of 'svn resolve' available to subcommands

which now need it as well.

* subversion/svn/conflict-callbacks.c

(svn_cl__get_conflict_func_interactive_baton,

svn_cl__conflict_func_interactive): Remove.

* subversion/svn/merge-cmd.c

(conflict_func_merge_cmd_baton, conflict_func_merge_cmd): Add this

temporary implementation of svn_wc_conflict_resolver_func2_t to

avoid breaking 'svn merge --accept'. Note that we cannot support the

'edit' and 'launch' accept options anymore, so these now map to 'postpone'.

This is a small CLI interface change relative to 1.9.

(svn_cl__merge): Install the above conflict callback if necessary.

Invoke the interactive conflict resolver if necessary.

* subversion/svn/notify.c

(svn_cl__conflict_stats_get_paths): Implement.

* subversion/svn/resolve-cmd.c

(svn_cl__walk_conflicts): Implement. Partly split out of svn_cl__resolve().

* subversion/svn/svn.c

(sub_main): Do not install a libsvn_wc conflict callback by default.

* subversion/svn/switch-cmd.c

(svn_cl__switch): Invoke the interactive conflict resolver if necessary.

* subversion/svn/update-cmd.c

(svn_cl__update): Invoke the interactive conflict resolver if necessary.

  1. … 7 more files in changeset.
Fixed some compiler warnings.

* subversion/libsvn_diff/binary_diff.c

(write_literal): Change the type of a local variable to avoid

a 64-to-32-bit conversion warning on 64-bit platforms.

* subversion/libsvn_subr/cache-membuffer.c

(svn_membuffer_get_segment_info): Likewise.

* subversion/libsvn_fs_base/bdb/strings-table.c

(svn_fs_bdb__string_read): Add a cast to avoid a 64-to-32-bit

conversion warning on 64-bit platforms.

* subversion/libsvn_fs_fs/rev_file.c

(set_read_only): Initialize the status because it may have

been used uninitialized.

* subversion/svn/merge-cmd.c

(unspecified_revision): Remove unused global variable.

  1. … 4 more files in changeset.
Follow-up to 1489203: Remove unnecessary check for branches ancestry from

command line client. All required checks are performed in libsvn_client.

* subversion/svn/cl.h

* subversion/svn/util.c

(svn_cl__check_related_source_and_target): Remove

* subversion/svn/merge-cmd.c

* subversion/svn/mergeinfo-cmd.c

(run_merge, svn_cl__mergeinfo): Remove call to

svn_cl__check_related_source_and_target().

  1. … 3 more files in changeset.
Make the command client use a wrapper function when calling a deprecated

function to avoid a compiler warning.

* subversion/svn/cl.h

(svn_cl__deprecated_merge_reintegrate): New.

* subversion/svn/deprecated.c: New file.

* subversion/svn/merge-cmd.c

(run_merge): Use wrapper.

  1. … 2 more files in changeset.
* **/**

Run tools/dev/remove-trailing-whitespace.sh to remove all trailing whitespace

before we branch 1.8, like we did before creating previous branches.

No functional changes.

  1. … 199 more files in changeset.
Teach svn_client_merge_peg5() to do an automatic merge when no revision

ranges are specified, and let 'svn merge' rely on that instead of calling

the dedicated automatic merge APIs.

This leaves the dedicated 'automatic merge' APIs in place for now; we might

want to remove them or make them private.

This reduces the amount of progress feedback displayed when running an

automatic merge with the new '--verbose' option: the two phases that were

introduced by 'Calculating automatic merge' and 'Merging' messages are now

introduced by a single 'Merging' message.

* subversion/include/svn_client.h,

subversion/libsvn_client/merge.c

(svn_client_merge_peg5): Do an automatic merge if no revision range is

specified.

(svn_client_merge_peg4): Tweak the doc string to account for this change.

* subversion/svn/merge-cmd.c

(automatic_merge): Delete.

(run_merge): Don't take special action to handle an automatic merge, let

the pegged merge code path handle it.

* subversion/tests/cmdline/svntest/deeptrees.py

(deep_trees_run_tests_scheme_for_merge): To keep the tests working, specify

a revision range to the merge so that it will still be allowed even when

using 'ignore ancestry'. In other words, avoid invoking the automatic

merge checks.

  1. … 3 more files in changeset.
Make 'update' and 'switch' libsvn_client APIs delay calling the conflict

resolver for each conflicted path until the whole update is complete, like

r1459012 did for merge. Previously, the APIs called the callback as soon as

each conflict is raised, and 'svn' used a work-around.

Rationale:

- Avoids the possibility of a network timeout if the resolver callback

takes a long time, for example when doing interactive resolution.

- Means that all changes have been received. This is important when

resolving a tree conflict that involves a copy or move, because the

resolver (code or human) may need to look at or modify another path.

- Makes all subcommands work the same way. Eliminates the code in

'svn' that implements a 'postpone' callback.

- Makes this way of working available to all clients. Makes no difference

to a client that does not want to use it, such as a GUI.

This changes the notifications printed by 'svn' in the case of pre-specified

resolution (--accept=xxx), in the same way as described in r1459012 for

'merge'. It now prints a notification with status 'C' for each conflicted

path, and then later a 'Resolved ...' line for each conflicted path. The

Summary of Conflicts now reports both the number of remaining conflicts and

the number of resolved conflicts.

* subversion/libsvn_client/client.h

subversion/libsvn_client/resolved.c

(svn_client__resolve_conflicts): New function, moved and renamed from

resolve_conflicts() in merge.c, with the list-of-paths parameter changed

to a simple hash and the 'resolved' output made optional.

* subversion/libsvn_client/merge.c

(resolve_conflicts): Move to resolved.c: svn_client__resolve_conflicts().

(do_merge): Track the change of resolve_conflicts().

* subversion/libsvn_client/update.c

(record_conflict): New function.

(update_internal): Don't use the resolver callback in the client context,

but instead use a local one that just remembers the conflicted paths.

(svn_client__update_internal): Call the resolver on the conflicted paths

before returning.

* subversion/libsvn_client/switch.c

(record_conflict,

switch_internal,

svn_client__switch_internal): Same as in update.c.

* subversion/svn/cl.h,

subversion/svn/conflict-callbacks.c

(svn_cl__conflict_func_postpone,

svn_cl__get_conflict_func_postpone_baton,

get_postponed_conflicted_paths,

svn_cl__resolve_postponed_conflicts): Delete.

* subversion/svn/svn.c

(sub_main): Install the proper conflict handler instead of the 'postpone'

handler.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Don't install the conflict handler here, as we've now

done it in 'svn'.

* subversion/svn/update-cmd.c

(svn_cl__update): Remove a comment that said we were using the 'postpone'

handler. Don't resolve conflicts after the operation.

* subversion/svn/switch-cmd.c

(svn_cl__switch): Same.

* subversion/tests/cmdline/update_tests.py

(update_output_with_conflicts,

update_output_with_conflicts_resolved): Adjust to expect the new

placement of the 'Resolved conflicts ...' line and the new form of the

summary of conflicts.

  1. … 11 more files in changeset.
Fix issue #4316 "Merge errors out after resolving conflicts".

In the libsvn_client merge code, if conflicts are raised while merging one

of the revision ranges, then after that revision range call the conflict

resolution callback for each of those conflicts, and then continue with the

rest of the merge if all of those conflicts were resolved.

Notifications are changed. Previously, for a text or property conflict,

merge called the conflict resolution callback before notifying, and avoided

notifying a 'conflict' status if the resolver resolved it. Thus, a merge

with '--accept=mine-full' or a similar option would not notify any text or

prop conflicts. Now it will notify with a 'C' (conflict) status for each

path on which a conflict is raised, and later on reaching the end of a

revision range it will call the resolver which may resolve them and send a

'Resolved conflicts on ...' notification for each path.

If any conflicts are resolved in this way before the merge completes, the

Summary of Conflicts will be extended to report both the number of remaining

conflicts and the number of resolved conflicts. An example follows:

$ svn merge ^/A wc/A2 --accept=mf

--- Merging r2 through r4 into 'wc/A2':

C wc/A2/B

C wc/A2/mu

--- Recording mergeinfo for merge of r2 through r4 into 'wc/A2':

U wc/A2

Resolved conflicted state of 'wc/A2/B'

Resolved conflicted state of 'wc/A2/mu'

--- Merging r10 through r11 into 'wc/A2':

U wc/A2/B

U wc/A2/mu

--- Recording mergeinfo for merge of r10 through r11 into 'wc/A2':

G wc/A2

Summary of conflicts:

Property conflicts: 0 remaining (and 2 already resolved)

* subversion/libsvn_client/merge.c

(merge_file_changed,

merge_dir_changed,

merge_dir_added): If there is a conflict, don't call the resolver, just

record the conflict.

(single_range_conflict_report_t,

single_range_conflict_report_create): New conflict reporting structure,

containing also the remaining range to be merged.

(conflict_report_t,

conflict_report_create,

conflict_report_dup,

make_merge_conflict_error): Store a merge_source_t instead of just a

revision range.

(subrange_source): Add an assertion.

(do_file_merge,

do_mergeinfo_unaware_dir_merge,

do_mergeinfo_aware_dir_merge,

do_directory_merge): Use the new kind of conflict report structure.

(resolve_conflicts): New function.

(do_merge): After merging a revision range, do conflict resolution and

continue with the rest of the merge until it is all done.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Always install the requested conflict resolver before

doing the merge, and never run svn_cl__resolve_postponed_conflicts()

after the merge.

* subversion/svn/notify.c

(notify_baton): Add fields to track which paths have been notified as in

conflict and how many conflicts have been notified as resolved.

(store_path): New function.

(svn_cl__notifier_reset_conflict_stats,

svn_cl__get_notifier): Adjust accordingly.

(svn_cl__notifier_print_conflict_stats): If any conflicts are logged as

resolved, extend the relevant summary line to say so.

(notify): On receiving a 'conflict' notification, keep track of the path.

On receiving a 'resolved' notification, remove the resolved path from

the hashes of text-, prop- and/or tree-conflicted paths.

* subversion/tests/cmdline/merge_tests.py

(expected_merge_output,

svn_merge,

expected_merge_output2,

expected_out_and_err): Add support for the new notification format.

(merge_two_edits_to_same_prop,

merge_automatic_conflict_resolution): Tweak expectations.

(conflicted_split_merge_with_resolve): New test.

(test_list): Add the new test.

* subversion/tests/cmdline/svntest/main.py

(summary_of_conflicts): Add support for the new notification format.

  1. … 4 more files in changeset.
* subversion/svn/merge-cmd.c

(run_merge): Remove unreferenced argument.

(svn_cl__merge): Update sole caller to run_merge().

Let svn_cl__resolve_postponed_conflicts() tell the caller whether it

resolved all the conflicts. We don't use that yet, but we will soon. And

some other small tweaks the 'svn' conflict notification code.

* subversion/svn/cl.h,

(svn_cl__resolve_postponed_conflicts): Return a flag indicating whether

all conflicts were resolved.

(svn_cl__notifier_reset_conflict_stats): New function.

(svn_cl__print_conflict_stats): Rename to

svn_cl__notifier_print_conflict_stats() and s/pool/scratch_pool/ and

s/notify_baton/baton/ (the last being a follow-up to r1446746.

* subversion/svn/conflict-callbacks.c

(get_postponed_conflicted_paths): Simplify: remove a special-case return.

(svn_cl__resolve_postponed_conflicts): Implement the extra parameter, and

remove the special-case return.

* subversion/svn/notify.c

(svn_cl__notifier_reset_conflict_stats): New function.

(svn_cl__print_conflict_stats): Rename to

svn_cl__notifier_print_conflict_stats() and s/pool/scratch_pool/.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Update calls to svn_cl__print_conflict_stats().

* subversion/svn/patch-cmd.c

(svn_cl__patch): Same.

* subversion/svn/switch-cmd.c

(svn_cl__switch): Same.

* subversion/svn/update-cmd.c

(svn_cl__update): Same.

  1. … 6 more files in changeset.
Remove the 'depth' parameter from svn_cl__resolve_postponed_conflicts(), as

it was mis-used and unnecessary (and undocumented).

The function resolves the conflicts on a pre-selected set of specific paths.

It was resolving to the specified depth within each such path, but the

callers were mistakenly passing the depth of the overall merge/update/switch

operation.

* subversion/svn/cl.h,

subversion/svn/conflict-callbacks.c

(svn_cl__resolve_postponed_conflicts): Remove the 'depth' parameter.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Adjust caller.

* subversion/svn/switch-cmd.c

(svn_cl__switch): Adjust caller.

* subversion/svn/update-cmd.c

(svn_cl__update): Adjust caller.

  1. … 4 more files in changeset.
Simplify error handling in 'svn merge'. There's no need to run conflict

resolution if the merge threw an error, except in the one case where the

error is 'conflicts were raised'.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Change error handling as above.

Split up the main 'svn merge' function, simply hoisting a chunk of code out

into a separate function. This is in preparation for fixing issue #4316

"Merge errors out after resolving conflicts".

* subversion/svn/merge-cmd.c

(run_merge): New function ...

(svn_cl__merge): ... extracted from here.

Make the extra notification lines printed by 'svn merge --verbose' match the

style of the other notification lines that merge prints.

* subversion/svn/merge-cmd.c

(automatic_merge, svn_cl__merge): Tweak messages.

Fix issue #4238 "merge -cA,B with --accept option aborts if rA conflicts"

and several other conflict resolution issues identified along the way.

* subversion/include/svn_client.h

(svn_client_resolve): Document the choice==unspecified case.

* subversion/libsvn_wc/conflicts.h

(svn_wc__mark_resolved_prop_conflicts): New function.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Slightly simplify the code.

(eval_text_conflict_func_result): Make 'mine-full' do the right thing:

don't use the working file, as it might be the result of a merge attempt

with conflict markers in it.

(svn_wc__conflict_invoke_resolver): When marking conflicts as resolved,

don't just mark them in the DB, do the proper dance that includes

removing the conflict artifact files from disk.

(resolve_conflict_on_node): Add some notes and a correction in the doc

string.

(svn_wc__mark_resolved_prop_conflicts): New function.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): If we succeed in resolving conflicts, then reset

the notification status to 'merged' rather than 'conflicted'.

* subversion/libsvn_wc/props.c

(svn_wc_merge_props3): If we succeed in resolving conflicts, then reset

the notification status to 'merged' rather than 'conflicted'.

* subversion/svn/conflict-callbacks.c

(svn_cl__conflict_func_interactive): If we choose the 'working' state and

no 'merged' value is available, which is common with property conflicts,

then use 'mine'.

* subversion/svn/merge-cmd.c

(svn_cl__merge):

* subversion/tests/cmdline/merge_tests.py

(expected_merge_output, svn_merge): Remove the 'resolved' parameter, as we

no longer need it.

(merge_two_edits_to_same_prop,

merge_automatic_conflict_resolution): When conflicts are resolved,

expect status 'U', instead of status 'C' followed by a 'Resolved'

notification.

* subversion/tests/cmdline/resolve_tests.py

(multi_range_merge_with_accept): Remove XFail.

  1. … 8 more files in changeset.
Expose the 'diff_ignore_ancestry' option in the automatic merge API (which

is new since 1.7 so can be changed without deprecating).

* subversion/include/svn_client.h,

subversion/libsvn_client/merge.c

(svn_client_do_automatic_merge): Add a 'diff_ignore_ancestry' parameter.

* subversion/svn/merge-cmd.c

(automatic_merge): Same, and pass it through.

(svn_cl__merge): Pass FALSE for this new param to automatic_merge().

  1. … 2 more files in changeset.
Remove a new public API for reintegrate merge that I introduced since 1.7.

We don't want it now because it's superseded by the automatic merge API.

There is a small functional change: the '--verbose' option will no longer

print any extra messages during a reintegrate merge -- but that option is

new since 1.7 so that doesn't matter.

* subversion/include/svn_client.h,

subversion/libsvn_client/merge.c

(svn_client_find_reintegrate_merge): Delete.

* subversion/svn/merge-cmd.c

(merge_reintegrate): Delete.

(svn_cl__merge): Call the old svn_client_merge_reintegrate() function

directly.

  1. … 2 more files in changeset.
Separate the two meanings of 'ignore_ancestry' in the libsvn_client merge

APIs. The two new flags are 'ignore_mergeinfo' and 'diff_ignore_ancestry'.

* subversion/include/svn_client.h

(svn_client_merge5, svn_client_merge_peg5): New, with separate flags.

(svn_client_merge4, svn_client_merge_peg4): Deprecated.

* subversion/libsvn_client/merge.c

(svn_client_merge5, svn_client_merge_peg5): New, with separate flags.

* subversion/libsvn_client/deprecated.c

(svn_client_merge4, svn_client_merge_peg4): Re-implement as wrappers.

* subversion/svn/merge-cmd.c

(merge_reintegrate, svn_cl__merge): Update callers.

  1. … 3 more files in changeset.
* subversion/svn/merge-cmd.c

(svn_cl__merge): If the user provides an explicit merge target, use it. Until

this patch the '.' was taken as no target provided, and the target might just

decide to merge into a child instead.

* subversion/tests/cmdline/merge_tests.py

(merge_target_selection): Test target selection handling.

  1. … 1 more file in changeset.
Following the rename of libsvn_client merge 'force' parameters to

'force_delete' in r1435401, change all their callers likewise.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp

(Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZ): As above.

* subversion/bindings/javahl/native/SVNClient.h,

subversion/bindings/javahl/native/SVNClient.cpp

(SVNClient::merge): Same (in both variants of this function).

* subversion/svn/merge-cmd.c

(merge_reintegrate, automatic_merge, svn_cl__merge): Same.

  1. … 3 more files in changeset.
Fix issue #4139 'Subversion cannot perform merge if there's a file with

the same name as directory'.

* subversion/svn/merge-cmd.c

(svn_cl__merge): If the basename of the source is the same as the

basename of the current working directory, then assume the cwd is the

target.

Introduce some progress messages to the early phase of 'svn merge' if the

'--verbose' flag is given. This helps the user know that something is

happening in the time before notifications of changes start appearing, and

awareness can reduce frustration.

The '--verbose' option was not previously supported on this command so there

is no backward-compatibility concern.

* subversion/svn/merge-cmd.c

(unspecified_revision): New constant, moved here from inside svn_cl__merge.

(merge_reintegrate, automatic_merge): Move the branch relatedness check

here, from svn_cl__merge. In verbose mode, print progress messages.

(svn_cl__merge): In verbose mode, print progress messages before each of

the other kinds of merge.

Rename 'symmetric merge' to 'automatic merge' throughout the code base.

* subversion/include/private/svn_client_private.h

(svn_client__symmetric_merge_get_locations): Rename to

svn_client__automatic_merge_get_locations.

* subversion/include/svn_client.h

(svn_client_symmetric_merge_t, svn_client_find_symmetric_merge,

svn_client_find_symmetric_merge_no_wc, svn_client_do_symmetric_merge,

svn_client_symmetric_merge_is_reintegrate_like): Rename to

svn_client_automatic_merge_t, svn_client_find_automatic_merge,

svn_client_find_automatic_merge_no_wc, svn_client_do_automatic_merge,

svn_client_automatic_merge_is_reintegrate_like.

* subversion/libsvn_client/merge.c

(find_symmetric_merge, svn_client_symmetric_merge_t,

svn_client_find_symmetric_merge_no_wc, svn_client_find_symmetric_merge,

do_symmetric_merge_locked, svn_client_do_symmetric_merge,

svn_client_symmetric_merge_is_reintegrate_like,

svn_client__symmetric_merge_get_locations): Rename to

find_automatic_merge, svn_client_automatic_merge_t,

svn_client_find_automatic_merge_no_wc, svn_client_find_automatic_merge,

do_automatic_merge_locked, svn_client_do_automatic_merge,

svn_client_automatic_merge_is_reintegrate_like,

svn_client__automatic_merge_get_locations.

* subversion/svn/merge-cmd.c

(symmetric_merge): Rename to automatic_merge.

(svn_cl__merge): Track the renames.

* subversion/svn/mergeinfo-cmd.c

(mergeinfo_summary): Track the renames.

* subversion/tests/cmdline/merge_symmetric_tests.py

Rename to merge_automatic_tests.py, and rename everything inside it too.

  1. … 6 more files in changeset.
Make the symmetric merge APIs public.

* subversion/include/private/svn_client_private.h

(svn_client__symmetric_merge_t, svn_client__find_symmetric_merge,

svn_client__find_symmetric_merge_no_wc, svn_client__do_symmetric_merge,

svn_client__symmetric_merge_is_reintegrate_like): Move and rename to ...

* subversion/include/svn_client.h

(svn_client_symmetric_merge_t, svn_client_find_symmetric_merge,

svn_client_find_symmetric_merge_no_wc, svn_client_do_symmetric_merge,

svn_client_symmetric_merge_is_reintegrate_like): ... here.

* subversion/libsvn_client/merge.c,

subversion/svn/merge-cmd.c,

subversion/svn/mergeinfo-cmd.c:

Track the renames.

  1. … 4 more files in changeset.