Checkout Tools
  • last updated 8 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
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.
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.
A small simplification of svn_client__copy_foreign.

Don't open a new RA session; let the caller provide one.

* subversion/include/private/svn_client_private.h,

subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Take an RA session and a resolved location

instead of a URL and peg and operative revisions.

(copy_foreign_dir): Constify a parameter.

* subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir): Adjust the call.

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

(test_foreign_repos_copy): Open an RA session and adjust the calls.

  1. … 3 more files in changeset.
Support copies, for issue SVN-4786: Create a WC working-mods editor.

* subversion/include/private/svn_client_private.h

(svn_client__repos_to_wc_copy_dir): Also support copies from a foreign

repository. Take a resolved URL and revision instead of URL:peg:op-rev.

(svn_client__repos_to_wc_copy_file): New.

(svn_client__wc_editor,

svn_client__wc_editor_internal): To support copies, take an RA session.

* subversion/libsvn_client/conflicts.c

(merge_incoming_added_dir_replace): Adjust the call to

svn_client__repos_to_wc_copy_dir().

* subversion/libsvn_client/copy.c

(svn_client__repos_to_wc_copy_dir): As above.

(svn_client__repos_to_wc_copy_file): New, extracted ...

(repos_to_wc_copy_single): ... from here.

* subversion/libsvn_client/copy_foreign.c

(copy_foreign_dir): Adjust the call to svn_client__wc_editor_internal().

* subversion/libsvn_client/wc_editor.c

(edit_baton_t): Add an RA session.

(is_same_repository): New.

(dir_add): Adjust to support copying from same repo or foreign repo.

(file_add): Add support for copying from same repo or foreign repo.

(svn_client__wc_editor_internal,

svn_client__wc_editor): Accept an RA session.

  1. … 4 more files in changeset.
Split out the code for issue SVN-4786: Create a WC working-mods editor.

* subversion/include/private/svn_client_private.h

(svn_client__wc_editor_internal): New.

* subversion/libsvn_client/copy_foreign.c

Move the WC editor implementation from here...

* subversion/libsvn_client/wc_editor.c

... to this new file, copied from 'copy_foreign.c'.

  1. … 2 more files in changeset.
Start issue SVN-4786: Create a WC working-mods editor.

* subversion/include/private/svn_client_private.h

(svn_client__wc_editor): New.

* subversion/libsvn_client/copy_foreign.c

Extract existing editor and expand it to handle more cases.

  1. … 1 more file in changeset.
Simplify svn_client__copy_foreign().

Simplify by requiring the caller to hold a WC write lock. The only real

caller already did, and the test callers now do.

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Remove 'already_locked' parameter, and

document the requirement for a WC write lock.

(svn_client__repos_to_wc_copy_dir): Tweak similar comment in the same way.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): Don't pass that parameter.

* subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Remove the ability to acquire and release a

WC write lock.

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

(test_foreign_repos_copy): Acquire and release a write lock here.

  1. … 3 more files in changeset.
Further clean up some repos-to-WC copy code.

No functional change.

A follow-up to r1846403, which stopped writing to the 'src_revnum' field in

the case it touched (that is, when the source is a directory).

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Constify input parameters.

(svn_client__repos_to_wc_copy_dir): Document the RA session parameter.

* subversion/libsvn_client/copy.c

(resolve_pinned_externals): Constify input parameters.

(repos_to_wc_copy_single): Constify the 'pair' parameter and stop writing

to its 'src_revnum' field; the caller has already resolved that.

* subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Constify input parameters. Add comments and

adjust spacing.

  1. … 2 more files in changeset.
Revert r1704048 (merge of 'reuse-ra-session' branch): unfortunately the code

is not ready for trunk. The most serious problem that we cannot assume that

API user doesn't change svn_client_ctx_t fields like AUTH_BATON or

OPEN_TUNNEL_FUNC between svn_client_*() functions invocation. JavaHL bindings

is one example of usage of such pattern.

I'll revive 'reuse-ra-session' branch and attempt to fix these problems there.

Discussion: "Merge ra-reuse-session branch to trunk or not?" [1]

http://svn.haxx.se/dev/archive-2015-09/0173.shtml

  1. … 33 more files in changeset.
[Reverted in r1704255]

Introduce RA session pool in libsvn_client for managing and reusing RA session

for different URLs.

Discussion: "Merge ra-reuse-session branch to trunk or not?" [1]

More details are available in branch history [2].

[1] http://svn.haxx.se/dev/archive-2015-09/0173.shtml

[2] ^/subversion/branches/reuse-ra-session@1704029

* subversion/include/private/svn_client_private.h

(svn_client__ra_session_from_path2): Update docstring to mention that RA

session may be returned back to RA session pool by

svn_client__ra_session_release() function.

(svn_client__ra_session_release): New function declaration.

* subversion/libsvn_client/add.c

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/checkout.c

(mkdir_urls, svn_client_blame5, svn_client_cat3,

svn_client__checkout_internal): Release locally created sessions if there

were no errors.

* subversion/libsvn_client/client.h

(svn_client__ra_cache_t): Add new type declare.

(svn_client__private_ctx_t): Add RA_CACHE field.

* subversion/libsvn_client/commit.c

(check_url_kind_baton): Remove POOL, SESSION and REPOS_ROOT_URL -- they

were used as local RA session pool.

(check_url_kind): Just use svn_client_open_ra_session2() and

svn_client__ra_session_release() instead of trying to reparent existing

RA session.

(svn_client_commit6): Update baton initialization and release locally

created sessions if there were no errors.

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/mtcc.c

* subversion/libsvn_client/prop_commands.c

(pin_externals_prop, repos_to_repos_copy, repos_to_repos_copy,

wc_to_repos_copy, repos_to_wc_copy, svn_client__copy_foreign,

delete_urls_multi_repos, diff_repos_repos, diff_repos_wc,

svn_client_export5, handle_external_item_change, svn_client_import5,

svn_client_info4, get_inheritable_props, list_internal, release_locks,

svn_client__get_copy_source, svn_client_log5, svn_client__mtcc_commit,

propset_on_url): Release locally created sessions if there were no errors.

* subversion/libsvn_client/merge.c

(ensure_ra_session_url): Add TODO comment to use release RA sessions back

to RA session pool.

(do_merge): Reduce scope of second RA session and return it early back to

RA session pool.

(merge_locked, merge_peg_locked, find_automatic_merge_no_wc,

client_find_automatic_merge, do_automatic_merge_locked): Release locally

created sessions if there were no errors.

* subversion/libsvn_client/mergeinfo.c

(svn_client__get_wc_or_repos_mergeinfo_catalog, get_mergeinfo,

logs_for_mergeinfo_rangelist, svn_client__mergeinfo_log,

svn_client_suggest_merge_sources): Release locally created sessions if

there were no errors.

* subversion/libsvn_client/ra.c

(): Include "ra_cache.h"

(svn_client__open_ra_session_internal): Use

svn_client__ra_cache_open_session() to open RA session, instead of direct

call to svn_ra_open4().

(svn_client__repos_locations, svn_client__get_youngest_common_ancestor):

Release RA sessions after we finished using them.

(svn_client__ra_session_release): New.

* subversion/libsvn_client/ra_cache.c

* subversion/libsvn_client/ra_cache.h

(MAX_INACTIVE_SESSIONS, INACTIVE_SESSION_TIMEOUT, cache_entry_t,

open_tmp_file, get_wc_prop, set_wc_prop, push_wc_prop, invalidate_wc_props,

progress_func, cancel_func, get_client_string, get_wc_contents,

check_tunnel_func, open_tunnel_func, cleanup_ra_cache,

svn_client__ra_cache_init, close_ra_session, remove_inactive_entry,

expunge_cache_entries, find_session_by_url, open_new_session,

get_private_ra_cache, svn_client__ra_cache_open_session,

svn_client__ra_cache_release_session): New.

* subversion/libsvn_client/status.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

(reporter_finish_report, svn_client_status6, switch_internal,

svn_client__update_internal, svn_client_get_repos_root): Release locally

created sessions if there were no errors.

* tools/dev/ra-cache-summary.py: New script to analyze debugging output of

RA session reuse.

  1. … 33 more files in changeset.
Following the availability of apr_hash_this_key() etc. in APR v1.5, use

these in Subversion code instead of svn__apr_hash_index_key() etc. Provide

substitutes only when APR is too old to provide them.

* subversion/include/svn_types.h,

subversion/libsvn_subr/iter.c

(svn__apr_hash_index_key,

svn__apr_hash_index_klen,

svn__apr_hash_index_val):

Rename to apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val.

Declare and define them only if APR is older than 1.5.

Everywhere else: track the renames.

  1. … 102 more files in changeset.
Revert r1508225, which moved the include of svn_private_config.h before all

includes of our public headers. Public headers shouldn't depend on private

headers and all changes that required this are long reverted on trunk.

This patch excludes all conflicting cases.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

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

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

* subversion/libsvn_wc/old-and-busted.c

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

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

* subversion/tests/libsvn_repos/repos-test.c

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

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

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

* subversion/tests/libsvn_wc/conflict-data-test.c

* subversion/tests/libsvn_wc/op-depth-test.c

* subversion/tests/libsvn_wc/wc-test.c

* subversion/tests/svn_test_fs.c

* tools/server-side/fsfs-stats.c

Move the svn_string_private.h include back to the original location.

  1. … 162 more files in changeset.
Fix some typos.

* CHANGES:

* contrib/cgi/mirror_dir_through_svn.cgi:

* contrib/client-side/emacs/psvn.el:

* contrib/client-side/svn2cl/svn2cl.xsl:

* contrib/hook-scripts/remove-zombie-locks.py:

* contrib/hook-scripts/syntax-check.sh:

* contrib/server-side/svnstsw/configure.ac:

* notes/assurance.txt:

* notes/fs-improvements.txt:

* notes/knobs:

* notes/merge-tracking/func-spec.html:

* notes/merge-tracking/summit-survey.html:

* notes/wc-ng/design:

* notes/wc-ng/locking:

* notes/wc-ng/nodes:

* subversion/bindings/ctypes-python/csvn/core/__init__.py:

* subversion/bindings/ctypes-python/examples/example.py:

* subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java:

* subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java:

* subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java:

* subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java:

* subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java:

* subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java:

* subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java:

* subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java:

* subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java:

* subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java:

* subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java:

* subversion/bindings/swig/include/proxy_apr.swg:

* subversion/bindings/swig/perl/native/Client.pm:

* subversion/bindings/swig/perl/native/t/3client.t:

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c:

* subversion/include/private/svn_diff_tree.h:

* subversion/include/private/svn_io_private.h:

* subversion/include/private/svn_ra_svn_private.h:

* subversion/include/private/svn_string_private.h:

* subversion/include/svn_io.h:

* subversion/include/svn_iter.h:

* subversion/include/svn_props.h:

* subversion/libsvn_client/copy_foreign.c:

* subversion/libsvn_client/diff.c:

* subversion/libsvn_client/merge.c:

* subversion/libsvn_delta/xdelta.c:

* subversion/libsvn_diff/diff4.c:

* subversion/libsvn_diff/util.c:

* subversion/libsvn_fs/editor.c:

* subversion/libsvn_fs_fs/index.c:

* subversion/libsvn_fs_fs/temp_serializer.c:

* subversion/libsvn_fs_fs/temp_serializer.h:

* subversion/libsvn_fs_fs/transaction.c:

* subversion/libsvn_fs_fs/tree.c:

* subversion/libsvn_fs_x/fs.h:

* subversion/libsvn_fs_x/index.c:

* subversion/libsvn_fs_x/reps.c:

* subversion/libsvn_fs_x/temp_serializer.c:

* subversion/libsvn_fs_x/temp_serializer.h:

* subversion/libsvn_fs_x/transaction.c:

* subversion/libsvn_fs_x/tree.c:

* subversion/libsvn_ra_serf/README:

* subversion/libsvn_ra_svn/protocol:

* subversion/libsvn_repos/dump.c:

* subversion/libsvn_repos/hooks.c:

* subversion/libsvn_repos/load-fs-vtable.c:

* subversion/libsvn_subr/dirent_uri.c:

* subversion/libsvn_subr/io.c:

* subversion/libsvn_subr/opt.c:

* subversion/libsvn_subr/string.c:

* subversion/libsvn_subr/subst.c:

* subversion/libsvn_wc/entries.c:

* subversion/libsvn_wc/externals.c:

* subversion/libsvn_wc/lock.c:

* subversion/libsvn_wc/update_editor.c:

* subversion/svn/file-merge.c:

* subversion/svn/status-cmd.c:

* subversion/svnlook/svnlook.c:

* subversion/svnrdump/load_editor.c:

* subversion/svnserve/svnserve.c:

* subversion/tests/cmdline/commit_tests.py:

* subversion/tests/cmdline/diff_tests.py:

* subversion/tests/cmdline/merge_reintegrate_tests.py:

* subversion/tests/cmdline/merge_tests.py:

* subversion/tests/cmdline/revert_tests.py:

* subversion/tests/cmdline/svnauthz_tests.py:

* subversion/tests/cmdline/svntest/factory.py:

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

* subversion/tests/libsvn_repos/repos-test.c:

* subversion/tests/libsvn_subr/string-test.c:

* subversion/tests/libsvn_subr/utf-test.c:

* subversion/tests/libsvn_wc/db-test.c:

* subversion/tests/svn_test_main.c:

* tools/dev/trails.py: Fix some typos.

Patch by: Veres Lajos <vlajos{_AT_}gmail.com>

(I removed some changes that were wrong or can't be made due to API breakage)

  1. … 90 more files in changeset.
Don't canonicalize properties when doing a foreign copy.

Presumably if you're doing a foreign copy you don't have control over the

remote repo and you need to pull in whatever it has so as to be useful.

* subversion/include/svn_wc.h

(svn_wc_add_from_disk2): deprecate in favor of ...

(svn_wc_add_from_disk3): which lets you skip property canonicalization

* subversion/libsvn_wc/adm_ops.c

(svn_wc_add_from_disk2): Replace with ...

(svn_wc_add_from_disk3): new version of function with skip_checks arg.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add_from_disk2): Deprecated function moved here.

* subversion/libsvn_client/copy_foreign.c

(ensure_added, file_close, svn_client__copy_foreign): Update

svn_wc_add_from_disk2() call to svn_wc_add_from_disk3() with TRUE

for skip_checks arg

(dir_change_prop, file_change_prop): Update comments to match new function

* subversion/libsvn_client/add.c

(add_file, add_dir_recursive, add): Update svn_wc_add_from_disk2() call to

svn_wc_add_from_disk3() with FALSE for the skip_checks arg

* subversion/libsvn/client/merge.c

(merge_dir_opened): ...

* subversion/libsvn/client/patch.c

(create_missing_parents, install_patched_target,

install_patched_prop_targets): ...

* subversion/tests/libsvn_wc/utils.c

(sbox_wc_add): ...

  1. … 7 more files in changeset.
Fix the #include order such that svn_private_config.h is always

included first before any other svn header - if we also include

svn_hash.h.

* subversion/bindings/javahl/native/org_apache_subversion_javahl_ConfigImpl_Category.cpp,

subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c,

subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c,

subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c,

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

subversion/libsvn_fs_base/bdb/changes-table.c,

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

subversion/libsvn_wc/old-and-busted.c,

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

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

subversion/tests/libsvn_repos/repos-test.c,

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

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

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

subversion/tests/libsvn_wc/conflict-data-test.c,

subversion/tests/libsvn_wc/op-depth-test.c,

subversion/tests/libsvn_wc/wc-test.c,

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

tools/server-side/fsfs-stats.c): #include svn_private_config.h first

  1. … 180 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.
Add an 'ignore ancestry' parameter to the RA layer 'update' APIs, for

symmetry with the 'switch' APIs. Also add a scratch pool for the same

reason, although it is as yet unused.

The 'switch' APIs historically ignored ancestry and have recently gained an

'ignore ancestry' control (r1449413) so it can be disabled; they gained a

scratch pool at the same time. The 'update' APIs have historically never

ignored ancestry, and now they can.

For ra_local and ra_serf this works for all existing server versions, but

for ra_svn this requires a new svnserve. (Our DAV protocol already

supported an 'ignore ancestry' flag.)

Note: This 'ignore ancestry' option is the one that tells the server to

report the difference between two unrelated nodes of the same kind as a

content change instead of as a node replacement. This is not the option to

'svn switch' that allows the switch URL to be unrelated to the current URL,

that is also named '--ignore-ancestry'.

This was discussed in the dev@ email thread "Consistency between 'update'

and 'switch' APIs", starting on 2013-03-13, archived at e.g.

<http://svn.haxx.se/dev/archive-2013-03/0200.shtml>.

* subversion/include/svn_ra.h,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra/deprecated.c

(svn_ra_do_update3): New, renamed from svn_ra_do_update2(). Add

'ignore_ancestry' and scratch pool parameters.

(svn_ra_do_update2): Deprecate, and rewrite as a wrapper.

(svn_ra_do_update): Adjust the call to the vtable method.

(svn_ra_do_switch3): Adjust the doc string.

(svn_ra_do_diff3): Adjust a reference in the doc string.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add 'ignore_ancestry' and scratch pool parameters to

the 'do_update' method. Update the doc string of the 'do_switch' method.

* subversion/libsvn_ra/wrapper_template.h

(compat_do_update): Adjust the call to the vtable method.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__do_update): Add 'ignore_ancestry' and scratch pool

parameters, the latter unused.

* subversion/libsvn_ra_serf/ra_serf.h,

subversion/libsvn_ra_serf/update.c

(svn_ra_serf__do_update): Add 'ignore_ancestry' and scratch pool

parameters, the latter unused.

* subversion/include/svn_ra_svn.h,

subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn_write_cmd_update): Add the 'ignore_ancestry' flag.

* subversion/libsvn_ra_svn/client.c

(ra_svn_update): Add 'ignore_ancestry' and scratch pool parameters, the

latter unused.

* subversion/svnserve/serve.c

(update): Parse and use the 'ignore_ancestry' parameter; default to false

if not present. Simplify the 'send_copyfrom_args' handling to match how

it is done in 'switch'.

* subversion/libsvn_ra_svn/protocol

Document the addition of the new parameter to the 'update' command.

Update the callers, without ever requesting to ignore ancestry:

* subversion/libsvn_client/copy_foreign.c

(copy_foreign_dir): Track the change to svn_ra_do_update3().

* subversion/libsvn_client/export.c

(export_directory): Track the change to svn_ra_do_update3().

* subversion/libsvn_client/update.c

(update_internal): Track the change to svn_ra_do_update3().

* subversion/svnrdump/svnrdump.c

(dump_initial_full_revision): Track the change to svn_ra_do_update3().

  1. … 16 more files in changeset.
Use svn_hash_gets and svn_hash_sets.

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/status.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

  1. … 30 more files in changeset.
Replace some deprecated calls in libsvn_client with calls to the

newer functions.

* subversion/libsvn_client/cat.c

(svn_client__get_normalized_stream): Update caller.

* subversion/libsvn_client/cmdline.c

(svn_client_args_to_target_array2): Update caller.

* subversion/libsvn_client/commit.c

(check_nonrecursive_dir_delete): Update caller.

* subversion/libsvn_client/commit_util.c

(harvest_not_present_for_copy): Update caller.

* subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Update caller.

* subversion/libsvn_client/diff.c

(diff_wc_wc,

diff_repos_wc,

diff_summarize_wc_wc): Update caller.

* subversion/libsvn_client/externals.c

(switch_file_external,

handle_external_item_removal,

svn_client__handle_externals): Update caller.

* subversion/libsvn_client/merge.c

(insert_parent_and_sibs_of_sw_absent_del_subtree,

get_mergeinfo_paths,

log_find_operative_subtree_revs,

flag_subtrees_needing_mergeinfo,

record_mergeinfo_for_added_subtrees,

ensure_wc_is_suitable_merge_target,

get_target_and_lock_abspath): Update caller.

* subversion/libsvn_client/ra.c

(svn_client__ra_get_copysrc_kind): Update caller.

* subversion/libsvn_client/status.c

(svn_client_status5): Update caller.

* subversion/libsvn_client/switch.c

(switch_internal): Update caller.

* subversion/libsvn_client/update.c

(update_internal): Update caller.

* subversion/libsvn_client/upgrade.c

(svn_client_upgrade): Update caller.

  1. … 12 more files in changeset.
* subversion/libsvn_client/copy_foreign.c

(svn_client__copy_foreign): Avoid db call for determining error message.

Report excluded nodes as versioned.

Use a consistent checksum mismatch message

* subversion/libsvn_client/copy_foreign.c

(file_close): make message identical to to that used elsewhere

Approved by: breser

Following up on r1437203, make sure we don't copy svn:mergeinfo from

foreign repositories.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): Drop svn:mergeinfo for foreign copies.

* subversion/libsvn_client/copy_foreign.c

(dir_change_prop,

file_change_prop,

svn_client__copy_foreign): Drop svn:mergeinfo.

  1. … 1 more file in changeset.
* subversion/libsvn_client/copy_foreign.c

(copy_foreign_dir): Adjust variables to avoid gcc "incompatible pointer"

warnings about const.

Resolve issue #3590, by making 'svn copy' capable of copying directory

structures from foreign repositories.

A notification is added to make it clear that this is not just a cheap

copy, like the intra repository copies.

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

(test_foreign_repos_copy): Update caller.

* subversion/tests/cmdline/copy_tests.py

(repos_to_wc): Add more recent issue number. Update expected result for

foreign repository copy.

* subversion/svn/notify.c

(notify): Add new notification handling.

* subversion/libsvn_client/copy_foreign.c

(edit_open): Make root directory when opening to make sure files in the root

work properly when completely handled before other changes.

(svn_client__copy_foreign): Allow usage within an existing lock.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_single): Use svn_client__copy_foreign for foreign

repository copies.

* subversion/include/svn_wc.h

(svn_wc_notify_action_t): Add notification value.

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Update prototype.

  1. … 6 more files in changeset.
In an attempt to make cmpilato fix the rest of issue #3590 before 1.8, add

a foreign repository copy implementation to libsvn_client.

* subversion/include/private/svn_client_private.h

(svn_client__copy_foreign): Declare new api. Still private.

* subversion/libsvn_client/copy_foreign.c

(new file): Implement an editor that uses the new svn_wc_add_from_disk2()

to perform a foreign repository copy.

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

(test_foreign_repos_copy): New test.

(test_funcs): Add test_foreign_repos_copy.

  1. … 2 more files in changeset.