Checkout Tools
  • last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
* subversion/include/private/svn_sorts_private.h

(*): Use Doxygen's comment leader for comments that incorporate doxygen

syntax — not because Doxygen parses this file, but for $EDITOR's syntax

highlighting.

Fix various typos detected by codespell

* include/private/svn_auth_private.h, include/private/svn_branch_impl.h,

include/private/svn_config_private.h, include/private/svn_diff_tree.h,

include/private/svn_mergeinfo_private.h, include/private/svn_object_pool.h,

include/private/svn_repos_private.h, include/private/svn_subr_private.h,

include/private/svn_temp_serializer.h, include/private/svn_utf_private.h,

include/private/svn_wc_private.h, include/svn_auth.h, include/svn_client.h,

include/svn_cmdline.h, include/svn_compat.h, include/svn_fs.h,

include/svn_ra.h, include/svn_repos.h, include/svn_types.h,

include/svn_types_impl.h, include/svn_version.h, include/svn_wc.h,

include/svn_x509.h:

(): Spelling fixes

  1. … 12 more files in changeset.
Introduce 'svnadmin build-repcache' command.

Implement the 'svnadmin build-repcache' CLI and add an ioctl API for building

the representation cache.

The implementation iterates over revisions in the specified range and recursively

processes the changed nodes, starting from the corresponding revision roots.

For each changed node, it ensures that its data and property representations

exist in the rep-cache. The nodes are processed in the same order as when

committing a transaction (see write_final_rev() function in libsvn_fs_fs/transaction.c),

so that the rep-cache.db files are fully consistent.

* subversion/svnadmin/svnadmin.c

(cmd_table): Add and document the 'build-repcache' command.

(subcommand_build_repcache,

build_rep_cache,

build_rep_cache_progress_func): New.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_REP_SHARING_NOT_ALLOWED,

SVN_ERR_FS_REP_SHARING_NOT_SUPPORTED): New error codes.

* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__ioctl_build_rep_cache_input_t,

SVN_FS_FS__IOCTL_BUILD_REP_CACHE): New.

* subversion/libsvn_fs_fs/fs.c

(fs_ioctl): Handle SVN_FS_FS__IOCTL_BUILD_REP_CACHE.

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs_fs/fs_fs.c

(): Include 'low_level.h'.

(svn_fs_fs__build_rep_cache,

reindex_node,

ensure_representation_sha1): New. Iterate over revisions and recursively

process the changed nodes. For each changed node, ensure that its data

and property representations exist in the rep-cache.

* subversion/tests/cmdline/svnadmin_tests.py

(build_repcache): New test.

(test_list): Add the new test.

* subversion/tests/libsvn_fs_fs/fs-fs-private-test.c

(): Include 'libsvn_fs_fs/rep-cache.h' and 'libsvn_fs/fs-loader.h'.

(build_rep_cache): New test.

(test_funcs): Add the new test.

* tools/client-side/bash_completion

(_svnadmin): Add the 'build-repcache' command.

Patch by: Denis Kovalchuk <denis.kovalchuk@visualsvn.com>

  1. … 8 more files in changeset.
* everywhere: Run tools/dev/remove-trailing-whitespace.sh to remove

trailing whitespace before we branch 1.14.

  1. … 104 more files in changeset.
Merge the 'decouple-shelving-cli' branch to trunk.

Summary:

Add the shelving v2 implementation from Subversion 1.11, as an alternative

to the shelving v3 implementation from Subversion 1.12.

They have substantially different pros and cons, so it is beneficial for the

user to be able to choose.

Make the shelving CLI version selectable by an environment variable:

env. var. not set => shelving v3 enabled

SVN_EXPERIMENTAL_COMMANDS=shelf3 => shelving v3 enabled

SVN_EXPERIMENTAL_COMMANDS=shelf2 => shelving v2 enabled

SVN_EXPERIMENTAL_COMMANDS= => no shelving CLI

  1. … 13 more files in changeset.
Complete the upgrade of array insert/delete functions.

For issue #4840 "Merge assertion failure in svn_sort__array_insert".

This changes all remaining callers, in other areas of Subversion, to use the

new array insert/delete functions that return standard Subversion errors if

inputs are out of bounds, and removes the old versions of those functions.

These are private functions so the public API is not affected.

* subversion/include/private/svn_sorts_private.h

* subversion/libsvn_subr/sorts.c

(svn_sort__array_insert,

svn_sort__array_delete): Remove.

(svn_sort__array_insert2,

svn_sort__array_delete2): Rewrite as the only version, instead of calling

the old version. No functional change.

Elsewhere: update all callers.

  1. … 18 more files in changeset.
Require at least version 1.5 of APR

Since r1874057, the apr_pescape_shell() API is being used to escape filenames

when invoking $SVN_EDITOR. This was added to APR in 1.5.0, released on

2013-11-13.

* INSTALL

(): Document new minimum APR version

* build/generator/gen_win_dependencies.py

(_find_apr): Bump minimal_apr_version to 1.5.0

* configure.ac

(APR_VER_REGEXES): Bump minor version in 1.x regex to 1.5

* get-deps.sh:

(APR_VERSION): Specify 1.5.0 as default version

* subversion/include/private/svn_dep_compat.h

(apr_time_from_msec): Removed, since it's provided by APR 1.4.0 or later

* subversion/include/svn_types.h

(apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val): Remove

prototypes, since they're provide by APR 1.5.0 or later

* subversion/libsvn_subr/iter.c

(hash_do_baton): Remove condition requiring APR 1.4.0 to define this type

(svn_iter_apr_hash): Remove pre-APR 1.4.0 code

(apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val): Remove

definitions, since they're provided by APR 1.5.0 or later

* subversion/libsvn_subr/pool.c

(apr_pool_create_unmanaged_ex): Remove conditional alias to

apr_pool_create_core_ex, for APR versions < 1.3.3

  1. … 7 more files in changeset.
Avoid aborting on assertion failure in the area of mergeinfo calculations.

Instead, raise a catchable assertion error.

If an error occurs in svn_rangelist_merge2(), produce a more detailed error

message to aid in debugging.

Introduce and use 'svn_sort__array_insert2()' which checks its inputs. The

old version of this function was aborting on out-of-range inputs. Introduce

and use 'svn_sort__array_delete2()' likewise, as similar issues may show up

here too. The old version of this function was ignoring calls with

out-of-range inputs. The old versions of both functions are still in use

elsewhere in the Subversion libraries.

For issue #4840, "Merge assertion failure in svn_sort__array_insert".

* subversion/include/private/svn_sorts_private.h,

subversion/libsvn_subr/sorts.c

(svn_sort__array_insert2,

svn_sort__array_delete2): New.

* subversion/libsvn_client/merge.c

(slice_remaining_ranges,

insert_child_to_merge): Allow returning an error.

Everywhere: use svn_sort__array_insert2() and svn_sort__array_delete2().

* subversion/libsvn_subr/mergeinfo.c

(adjust_remaining_ranges): Allow returning an error.

(dual_dump): Replace this old debug helper...

(rangelist_to_string_debug): ... with this new one.

(svn_rangelist_merge2): Extract the body of this function into a local

'rangelist_merge2', leaving the original as an error-checking

wrapper. If an error occurs, report its inputs.

(rangelist_is_sorted): New.

Everywhere: use svn_sort__array_insert2() and svn_sort__array_delete2().

* subversion/tests/libsvn_subr/mergeinfo-test.c

(test_rangelist_merge_random_non_validated_inputs): Expect assertion

failures; ignore them.

(test_funcs): Expect that test to pass now.

  1. … 4 more files in changeset.
Adjust lifetime of the result returned from svn_repos__normalize_prop().

Previously, this function would make an unconditional copy of the value into

the result pool. While this may look convenient in some of the cases, there

is a downside of making unnecessary copies even if no normalization happened.

Instead of that, let's give the calling site control over the results' lifetime

by not making the copy if the input did not change. The callers may still dup()

the value if they need to, but with this approach there are no unavoidable

copies in various situations, such as where we would like to only update the

value if it changed or where we don't have an appropriate scratch pool, but

need to normalize the property value anyway.

* subversion/include/private/svn_repos_private.h

(svn_repos__normalize_prop): Adjust documentation.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos__normalize_prop): Do not duplicate the input if no normalization

is required.

* subversion/libsvn_repos/dump_editor.c

(normalize_props): Adjust call to svn_repos__normalize_prop(), explicitly

duplicate the property value into the result pool.

* subversion/svnrdump/load_editor.c

(set_revision_property, set_node_property): Explicitly duplicate the property

values into the long-living pool.

* subversion/svnrdump/util.c

(svn_rdump__normalize_props): Adjust call to svn_repos__normalize_prop(),

explicitly duplicate the property value into the result pool.

  1. … 4 more files in changeset.
Report a revision's size on disk.

This adds an 'svnadmin rev-size' CLI and a libsvn_fs ioctl API to report

the total size in bytes of the representation on disk of a revision,

including rev-props, excluding FSFS indexes.

$ svnadmin rev-size /path/to/repo -r1

1337 bytes in revision 1

* subversion/svnadmin/svnadmin.c

(cmd_table): Add and document the 'rev-size' command.

(revision_size,

subcommand_rev_size): New.

* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__ioctl_revision_size_input_t,

svn_fs_fs__ioctl_revision_size_output_t,

SVN_FS_FS__IOCTL_REVISION_SIZE): New.

* subversion/libsvn_fs_fs/fs.c

(fs_ioctl): Handle SVN_FS_FS__IOCTL_REVISION_SIZE.

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs_fs/stats.c

(svn_fs_fs__revision_size,

rev_size_index_entry_cb,

rev_size_baton_t): New.

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/revprops.c

(svn_fs_fs__get_revision_props_size): New.

* tools/client-side/bash_completion

(_svnadmin): Add 'rev-size'.

  1. … 7 more files in changeset.
Reimplement fsfs private operations required by `svnfsfs` (stats, dump index,

load index) as "ioctls".

Technically we achieve this by introducing the new svn_fs_ioctl() API that

adds a generic way of performing backend-specific I/O operations.

This change serves two purposes:

- It allows us to properly expose FS-specific details and invoke FS-specific

operations everywhere without necessarily promoting them into a proper

public API (the ioctl code itself may be made either public or private,

depending on the requirements).

- It solves a potential dependency/linking problem where tools like `svnfsfs`

work through the libsvn_fs's loader, but also have to load and call private

APIs from libsvn_fs_fs thus ignoring the loader. The latter part may

potentially cause issues with the global shared state, etc. With the

patch, all such operations always go through the FS loader.

* subversion/include/svn_fs.h

(svn_fs_ioctl, SVN_FS_DECLARE_IOCTL_CODE, svn_fs_ioctl_code_t): New.

* subversion/include/svn_error_codes.h

(SVN_ERR_FS_UNRECOGNIZED_IOCTL_CODE): New error code.

* subversion/include/private/svn_fs_fs_private.h

(svn_fs_fs__get_stats, svn_fs_fs__dump_index, svn_fs_fs__load_index):

These functions are now implemented as...

(SVN_FS_FS__IOCTL_GET_STATS, SVN_FS_FS__IOCTL_DUMP_INDEX,

SVN_FS_FS__IOCTL_LOAD_INDEX): ...these new ioctls, which ...

(svn_fs_fs__ioctl_get_stats_input_t, svn_fs_fs__ioctl_get_stats_output_t,

svn_fs_fs__ioctl_dump_index_input_t, svn_fs_fs__ioctl_load_index_input_t):

...use these new structures.

* subversion/libsvn_fs/fs-loader.h

(fs_library_vtable_t.ioctl, fs_vtable_t.ioctl): New vtable members.

* subversion/libsvn_fs/fs-loader.c

(svn_fs_ioctl): Implement the new API by forwarding it to an appropriate

vtable member.

* subversion/libsvn_fs_fs/fs_fs.h

(svn_fs_fs__get_stats, svn_fs_fs__dump_index, svn_fs_fs__load_index):

These functions are now declared here.

* subversion/libsvn_fs_fs/fs.c

(): Include `svn_fs_fs_private.h`.

(fs_ioctl): Implement the ioctl dispatcher for three current fsfs-specific

operations.

(fs_vtable): Initialize the `ioctl` field.

(library_vtable): Initialize the `ioctl` field to NULL.

* subversion/libsvn_fs_fs/dump-index.c,

subversion/libsvn_fs_fs/load-index.c,

subversion/libsvn_fs_fs/stats.c

(): Tweak includes.

* subversion/libsvn_fs_base/fs.c

(library_vtable, fs_vtable): Initialize the `ioctl` field to NULL.

* subversion/libsvn_fs_x/fs.c

(library_vtable, fs_vtable): Initialize the `ioctl` field to NULL.

* subversion/svnfsfs/dump-index-cmd.c

(dump_index): Invoke an appropriate svn_fs_ioctl().

* subversion/svnfsfs/load-index-cmd.c

(load_index): Invoke an appropriate svn_fs_ioctl().

* subversion/svnfsfs/stats-cmd.c

(subcommand__stats): Invoke an appropriate svn_fs_ioctl().

* subversion/tests/libsvn_fs/fs-test.c

(test_unrecognized_ioctl): New test.

(test_funcs): Run the new test.

* subversion/tests/libsvn_fs_fs/fs-fs-private-test.c

(get_repo_stats, dump_index, load_index): Switch to svn_fs_ioctl().

* build.conf

(svnfsfs, fs-fs-private-test): Don't link to libsvn_fs_fs.

  1. … 17 more files in changeset.
Tweak API documentation, reviewing API changes since 1.11.

Fix missing 'deprecated' tags, Doxygen mark-up, etc.

  1. … 2 more files in changeset.
Change the shelf storage directory name from 'v2' to 'v3'.

Also remove the knowledge of the existence of a shelves directory from the

WC API, and instead just have knowledge of the 'experimental' features dir

at this level.

* subversion/include/private/svn_wc_private.h,

subversion/libsvn_wc/wcroot_anchor.c

(svn_wc__get_experimental_dir): Replacement for 'svn_wc__get_shelves_dir'.

* subversion/libsvn_client/shelf.c

(get_shelves_dir): New.

(shelf_construct,

svn_client__shelf_list): Use it.

  1. … 2 more files in changeset.
* subversion/include/private/svn_client_mtcc.h

(svn_client__mtcc_commit): Improve documentation.

Add resolver support for moved-file vs moved-file upon update.

The resolver now supports move vs move tree conflicts for files after

an update operation.

Two new resolution operations are available:

(m) - override incoming move and merge incoming changes from 'alpha-moved'

to 'alpha-also-moved'

(M) - accept incoming move and merge local changes from 'alpha-also-moved'

to 'alpha-moved'

Where the file was originally called 'alpha', was renamed to 'alpha-moved'

in the repository, and renamed to 'alpha-also-moved' in the working copy.

Because the local move is broken during the update operation when the

delete-half of the move is updated, the resolver only has the copied half

move available in the working copy. To find the local move destination the

resolver queries the working copy database for nodes which are copies of

the conflict victim's repository path. This can of course lead to ambiguous

results in case a node is first copied and then moved, in which case the

resolver offers the user a choice of local move targets in the usual way.

* subversion/include/private/svn_wc_private.h

(svn_wc__find_copies_of_repos_path): Declare.

* subversion/libsvn_client/conflicts.c

(conflict_tree_update_local_moved_away_details): New conflict details struct.

(resolve_both_moved_file_update_keep_local_move,

resolve_both_moved_file_update_keep_incoming_move): New resolution handlers.

(conflict_tree_get_details_update_local_moved_away): New details fetcher

which locates copied nodes corresponding to the local move.

(get_both_moved_file_paths): New helper function.

(conflict_tree_get_description_update_both_moved_file_merge,

conflict_tree_get_description_update_both_moved_file_move_merge): New

functions which describe incoming move vs local move conflicts flagged

during updates of files.

(configure_option_both_moved_file_merge): Hook up the new options.

(svn_client_conflict_option_get_moved_to_abspath_candidates2,

svn_client_conflict_option_set_moved_to_abspath2,

conflict_type_specific_setup): Support the newly added conflict options.

* subversion/libsvn_wc/node.c

(svn_wc__find_copies_of_repos_path): New.

* subversion/libsvn_wc/wc-queries.sql

(STMT_SELECT_COPIES_OF_REPOS_RELPATH): New query which locates copies of a

particular repository relpath with a particular node kind in working copy.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_find_copies_of_repos_path): New wc_db API to execute above query.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_find_copies_of_repos_path): Declare.

* subversion/tests/libsvn_client/conflicts-test.c

(create_file_move_vs_file_move_update_conflict): New helper function.

(test_update_file_move_vs_file_move,

test_update_file_move_vs_file_move_accept_move, test_funcs): New tests

which exercise both of the newly added conflict resolution options.

  1. … 6 more files in changeset.
Let the WC mods editor and WC replay editor APIs take explicit notification

callbacks.

* subversion/include/private/svn_client_private.h

(svn_client__wc_replay,

svn_client__wc_copy_mods): Take a notification callback.

* subversion/libsvn_client/commit.c

(svn_client__wc_replay): Take a notification callback.

* subversion/libsvn_client/wc_editor.c

(svn_client__wc_copy_mods): Take a notification callback.

* subversion/svn/shelf-cmd.c

(svn_cl__wc_copy_mods): Adjust caller.

  1. … 3 more files in changeset.
Teach the WC editor to acquire and release a WC write lock.

* subversion/include/private/svn_client_private.h

(svn_client__wc_editor): Document that it manages the write lock.

(svn_client__wc_editor_internal): Add an option flag to manage the write lock.

* subversion/libsvn_client/copy.c

(copy_foreign_dir,

svn_client__repos_to_wc_copy_by_editor): Ask the WC editor not to manage

the write lock for us here, as the caller does it.

* subversion/libsvn_client/shelf.c

(svn_client__shelf_apply): Don't aquire and release the write lock here:

let the WC editor do it.

* subversion/libsvn_client/wc_editor.c

(edit_baton_t): Add fields to manage the write lock.

(release_write_lock,

pool_cleanup_handler): New.

(edit_open): If requested, acquire the write lock and arrange for it to be

released on pool clean-up.

(edit_close): If acquired, release the write lock.

(svn_client__wc_editor_internal): Add the option flag to manage the write

lock. Initialize the 'abort_edit' method so that it will release the

write lock, the same as 'close_edit'.

(svn_client__wc_editor): Ask for the write lock to be managed.

  1. … 3 more files in changeset.
* subversion/include/private/svn_client_private.h

(svn_client__get_diff_summarize_callbacks): Update doc string, following r1835234.

Fix some RA session breakage in the WC editor (issue #4786).

* subversion/include/private/svn_client_private.h

subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir): Note broken foreign-repo copy.

(svn_client__repos_to_wc_copy_internal): Save and restore the session URL.

  1. … 1 more file in changeset.
* subversion/include/private/svn_client_private.h

(svn_client__wc_copy_mods): Add a doc string.

Implement an experimental 'x-wc-copy-mods' command.

This can be used to comprehensively test the WC editor (issue #4786).

* subversion/include/private/svn_client_private.h,

subversion/libsvn_client/wc_editor.c

(svn_client__wc_copy_mods): New.

* subversion/svn/svn.c

(svn_cl__cmd_table): Add 'x-wc-copy-mods' command.

* subversion/svn/cl.h

(svn_opt_subcommand_t): Declare 'svn_cl__wc_copy_mods'.

* subversion/svn/shelf-cmd.c

(svn_cl__wc_copy_mods): New.

  1. … 4 more files in changeset.
Improvements to the 'WC editor' for issue #4786.

* subversion/include/private/svn_client_private.h

(svn_client__wc_editor): Specify the form of path arguments to the editor.

(svn_client__wc_replay): Same, and add a WC abspath argument.

* subversion/libsvn_client/commit.c

(svn_client__wc_replay): Add a WC abspath argument, and make all editor

paths relative to (the URL of) that path.

* subversion/libsvn_client/client.h,

subversion/libsvn_client/commit_util.c

(svn_client__condense_commit_items2): New.

* subversion/libsvn_client/wc_editor.c

(file_baton_t,

file_textdelta,

file_close): Add support for making a text-delta against a non-empty

base.

  1. … 4 more files in changeset.
Follow up to r1849080: move a private function out of a public header.

* subversion/include/svn_dirent_uri.h: Update file-level docstrin.

(svn_relpath__internal_style): Removed.

* subversion/include/private/svn_dirent_uri_private.h: New file.

(svn_relpath__make_internal): Renamed from svn_relpath__internal_style.

* subversion/libsvn_subr/dirent_uri.c,

subversion/svndumpfilter/svndumpfilter.c,

subversion/tests/libsvn_subr/dirent_uri-test.c,

subversion/bindings/javahl/native/Path.cpp:

Include private/svn_dirent_uri_private.h and use svn_relpath__make_internal

instead of svn_relpath__internal_style.

* subversion/bindings/swig/python/svn/core.py

(__all__): Remove mention of svn_relpath__internal_style from the comment.

  1. … 6 more files in changeset.
Let repository-to-WC copies go through the WC editor.

For issue #4786 "Create a WC working-mods editor".

Similar to the patch committed in r1848892 and reverted in r1848897, except

that attempt failed on Windows because it created the copy target root

directory twice.

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy): Rename to

'svn_client__repos_to_wc_copy_internal'.

(svn_client__repos_to_wc_copy_by_editor): New.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Update to use

'svn_client__repos_to_wc_copy_by_editor'.

* subversion/libsvn_client/copy.c

(copy_foreign_dir): Remove 'depth' parameter: not needed and was wrongly

implemented anyway.

(svn_client__repos_to_wc_copy_dir): Adjust caller.

(is_same_repository): New, moved from 'wc_editor.c'.

(svn_client__repos_to_wc_copy_by_editor): New.

(svn_client__repos_to_wc_copy,

repos_to_wc_copy_single): Determine same-repository here and here...

(repos_to_wc_copy_locked): ... instead of here.

* subversion/libsvn_client/wc_editor.c

(is_same_repository): Delete; moved to 'copy.c'.

(dir_add,

file_add): Don't determine same-repository here. Do set the 'created' flag.

* subversion/tests/libsvn_client/client-test.c

(test_foreign_repos_copy): Update caller.

  1. … 4 more files in changeset.
Revert r1848892 as it fails on Windows.

  1. … 4 more files in changeset.
Let repository-to-WC copies go through the WC editor.

For issue #4786 "Create a WC working-mods editor".

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy): Rename to

'svn_client__repos_to_wc_copy_internal'.

(svn_client__repos_to_wc_copy_by_editor): New.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Update to use

'svn_client__repos_to_wc_copy_by_editor'.

* subversion/libsvn_client/copy.c

(copy_foreign_dir): Remove 'depth' parameter: not needed and was wrongly

implemented anyway.

(svn_client__repos_to_wc_copy_dir): Adjust caller.

(is_same_repository): New, moved from 'wc_editor.c'.

(svn_client__repos_to_wc_copy_by_editor): New.

(svn_client__repos_to_wc_copy,

repos_to_wc_copy_single): Determine same-repository here and here...

(repos_to_wc_copy_locked): ... instead of here.

* subversion/libsvn_client/wc_editor.c

(is_same_repository): Delete; moved to 'copy.c'.

(dir_add,

file_add): Don't determine same-repository here. Do set the 'created' flag.

* subversion/tests/libsvn_client/client-test.c

(test_foreign_repos_copy): Update caller.

  1. … 4 more files in changeset.
Simplify the physical implementation of foreign-repo copy.

For issue #4786 "Create a WC working-mods editor".

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Remove.

* subversion/libsvn_client/copy.c

(copy_foreign_dir): New here, moved from copy_foreign.c.

(svn_client__repos_to_wc_copy_dir): Call copy_foreign_dir() directly

instead of through svn_client__foreign_copy().

(svn_client__repos_to_wc_copy): Allow a null 'timestamp_sleep' output ptr.

* subversion/libsvn_client/copy_foreign.c

Delete this file; move copy_foreign_dir() to copy.c.

* subversion/tests/libsvn_client/client-test.c

(test_foreign_repos_copy): Update callers of svn_client__copy_foreign()

to use svn_client__repos_to_wc_copy() instead.

  1. … 3 more files in changeset.
Unify how 'copy' processes externals with and without pinning.

For issue #4786 "Create a WC working-mods editor".

Remove the optional 'externals' processing from inside the

'repos_to_wc_copy' API. Previously, externals were fetched outside the

'copy' API if and only if some externals were to be pinned. Now we always

use that code path.

As a side effect, this makes the notifications consistent between the two

cases.

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy): Remove 'externals' options.

* subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir,

svn_client__repos_to_wc_copy): Remove 'externals' option.

(repos_to_wc_copy_single): Always fetch externals after the copy.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Trivially update this caller.

* subversion/libsvn_client/wc_editor.c

(dir_add,

file_add): Trivially update these callers.

* subversion/tests/cmdline/externals_tests.py

(url_to_wc_copy_of_externals): Revert the changes to the expected

notifications that were introduced by r1847206.

  1. … 4 more files in changeset.
For issue #4786 "Create a WC working-mods editor": combine dir and file

versions of a copy API, in the interest of unifying file and dir operations

as much as possible to simplify callers.

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy): New.

(svn_client__repos_to_wc_copy_dir,

svn_client__repos_to_wc_copy_file): Delete.

* subversion/libsvn_client/copy.c

(verify_wc_srcs): Add a simple doc string.

(svn_client__repos_to_wc_copy_dir,

svn_client__repos_to_wc_copy_file): Make static.

(svn_client__repos_to_wc_copy): New.

(repos_to_wc_copy_single): Update callers.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Update callers.

* subversion/libsvn_client/wc_editor.c

(dir_add,

file_add): Update callers.

  1. … 3 more files in changeset.
Deduplicate the make-parents functionality in 'copy' code.

And the verification that WC target paths are suitable.

* subversion/include/private/svn_client_private.h,

subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Remove all that functionality, as it was done

already by 'verify_dsts', and remove the 'make_parents' parameter.

* subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir): Update the call to ...copy_foreign.

(repos_to_wc_copy): Remove all that functionality; from now on it is going

to have been done already by 'verify_dsts'.

(repos_to_wc_copy_locked): Move the 'verify_dsts' call up from here...

(try_copy): ... to here and let it make missing parents.

* subversion/tests/libsvn_client/client-test.c

(test_foreign_repos_copy): Update calls to ...copy_foreign.

  1. … 3 more files in changeset.