Checkout Tools
  • last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Another step in reducing coupling between diff drivers and diff writers.

Let svn_client__arbitrary_nodes_diff() anchor the diff processor API at the

requested target paths always, rather than sometimes there and sometimes at

the parent of one of them.

Move the responsibility for prefixing diff header paths with the first

path's basename in certain cases (when the targets are not both directories)

to the caller, where it is more appropriate since it is a presentation

issue.

* subversion/libsvn_client/client.h,

subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Always anchor at the requested target

paths, even when they are not both directories. Remove the (now unused)

'anchor_at_given_paths' flag and (already unused) 'result_pool' params.

* subversion/libsvn_client/diff.c

(do_diff): Determine the prefix for diff header paths here, instead.

* subversion/tests/cmdline/diff_tests.py

(diff_arbitrary_files_and_dirs): Extend this case a little, adding a file

that is modified and a node that is replaced by a different kind.

  1. … 3 more files in changeset.
* subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Remove a debug print, following r1835234.

Reduce coupling between diff drivers and diff writers.

Let diff drivers anchor the diff-processor at the requested target paths,

rather than sometimes there and sometimes at the parent of one of them, in

summarize mode. The quirky anchoring still persists in non-summarize mode.

* subversion/libsvn_client/diff.c

(diff_driver_info_t): Expand comments.

(diff_wc_wc,

diff_repos_repos,

diff_repos_wc): Remove 'root_relpath' and 'root_is_dir' outputs; instead

anchor the diff processor at the requested targets if no 'ddi' coupling

parameter is given.

(do_diff,

svn_client_diff7,

svn_client_diff_peg7,

svn_client_diff_summarize2,

svn_client_diff_summarize_peg2): Update the calls accordingly.

* subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/client.h

(svn_client__arbitrary_nodes_diff): Remove 'root_relpath' and 'root_is_dir'

outputs. Take an 'anchor_at_given_paths' mode flag and obey it.

* subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/client.h

(summarize_baton_t,

send_summary): Remove path adjustment.

(svn_client__get_diff_summarize_callbacks): Remove path adjustment and

an unused parameter.

* subversion/libsvn_wc/diff_local.c,

subversion/include/private/svn_wc_private.h

(svn_wc__diff7): Remove 'root_relpath' and 'root_is_dir' outputs. Take an

'anchor_at_given_paths' mode flag and obey it.

(svn_wc_diff6): Update the call to svn_wc__diff7() accordingly.

  1. … 5 more files in changeset.
* subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Remove duplicate condition.

Found by: Coverity <https://scan.coverity.com>

(CID: 1331995)

* subversion/libsvn_client/diff_local.c

(inner_dir_diff): Set left_only, not right_only, when right_abspath doesn't exist.

Found by: Coverity <https://scan.coverity.com>

(CID: 1332090)

Add support for translating files from the 'arbritrary node diff'.

This hides many non changes such as keyword changes when performing

a local diff like

$ svn diff --old=trunk --new=branches/log-message-templates

* subversion/libsvn_client/diff_local.c

(includes): Add svn_subst.h.

(translate_if_necessary): New function.

(do_file_diff): Call translate_if_necessary.

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.
In the libsvn_client diff handling: replace the output argument of the anchor

base argument with a pair of root_relpath and root_is_dir values.

These two booleans should allow cleaning up the remaining 'dual calculations'

of anchors in the diff code.

The diff runner and diff writer have/had deep knowledge about each others

about this handling and covered for bugs on the other side. This is pumbing

in preparation for replacing this with the usage of generic diff driver rules.

* subversion/include/private/svn_client_private.h

(svn_client__arbitrary_nodes_diff): Move function to client.h

* subversion/include/private/svn_wc_private.h

(svn_wc__diff7): Update private api.

* subversion/libsvn_client/client.h

(svn_client__arbitrary_nodes_diff): Move function here and update output

arguments to new form.

* subversion/libsvn_client/diff.c

(diff_wc_wc): Update output arguments. Update caller.

(diff_repos_repos): Update output arguments. Remove filter that isn't

necessary if our caller wants to do the filtering based on what we

return.

(do_diff): Update caller.

(svn_client_diff6,

svn_client_diff_peg6): Update caller.

(svn_client_diff_summarize2,

svn_client_diff_summarize_peg2): Update caller.

* subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Update output arguments.

* subversion/libsvn_client/diff_summarize.c

(summarize_baton_t): Remove two variables.

(ensure_skip_relpath): Remove now unneeded function.

(send_summary): Update caller.

(svn_client__get_diff_summarize_callbacks): Pass skip_relpath directly.

* subversion/libsvn_wc/diff_local.c

(includes): Add wc_db.h. Remove translate.h.

(svn_wc__diff7): Update argument. Always root at parent directory when we

can tell the caller about this. (This fixes driving a root replacement)

  1. … 6 more files in changeset.
And following up on the recent diff work: properly report deleted properties

on deleted directories.

* subversion/libsvn_client/diff.c

(diff_dir_added): Handle no_diff_added.

(diff_dir_deleted): Produce property diff.

* subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Use proper default. With FALSE replaced

nodes are first added and then deleted.

* subversion/tests/cmdline/diff_tests.py

(diff_two_working_copies): Update expected result.

* subversion/tests/cmdline/merge_authz_tests.py

(diff_unauth_parent): Update expected result. Fix test failure of r1570053.

  1. … 3 more files in changeset.
Following up on r1569551, update the libsvn_client 'svn diff' code to create a

diff processor in one place and directly pass that to all the different diff

implementations.

Move handling of all arguments that are only used for tree transformations

to libsvn_client (and the deprecated apis).

* subversion/include/private/svn_client_private.h

(includes): Add private/svn_diff_tree.h.

* subversion/include/private/svn_wc_private.h

(svn_wc__get_diff_editor): Update argument type.

* subversion/libsvn_client/diff.c

(diff_wc_wc): Update caller. Use anchor output argument.

(diff_repos_repos): Update argument type. Switch argument order.

(diff_repos_wc): Update caller.

(do_diff): Create diff processor. Update caller.

(diff_summarize_repos_wc,

diff_summarize_wc_wc,

do_diff_summarize): Update caller.

* subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Use diff processor argument. Pass anchor

to interested callers.

* subversion/libsvn_wc/deprecated.c

(svn_wc_get_diff_editor6): Update caller.

* subversion/libsvn_wc/diff_editor.c

(make_edit_baton,

svn_wc__get_diff_editor): Update argument type. Remove now unused arguments.

* subversion/libsvn_wc/diff_local.c

(diff_baton): Remove unused variable.

(svn_wc_diff6): Rename to...

(svn_wc__diff7): ... this. Update argument type. Remove now unused arguments.

Allow providing anchor as output argument.

(svn_wc_diff6): Reimplement as new function wrapping svn_wc__diff7.

  1. … 6 more files in changeset.
Reimplement the 'arbitrary nodes diff' in libsvn_client as a proper driver of

the diff processor, instead of a driver of the old diff callbacks 'with nice

output' (which was in some cases invalid and didn't follow any of the

ordering rules).

This removes the last real driver of the old diff callbacks and will finally

make it possible to convert the diff output handling to the diff processor

api, which will allow resolving some long standing bugs and feature

requests.

In theory this might even allow driving merge over this diff (to allow

things like maintaining vendor branches), but this will require more work.

* subversion/libsvn_client/diff_local.c

(includes): Add private/svn_diff_tree.h.

(do_file_diff,

do_dir_diff): New prototype.

(do_arbitrary_files_diff): Remove function.

(arbitrary_diff_walker_baton): Remove struct.

(arbitrary_diff_walker,

arbitrary_diff_this_dir): Remove prototypes.

(do_arbitrary_dirs_diff,

arbitrary_diff_this_dir): Fold into each other and rrename to...

(inner_dir_diff): ... this. Obtain dirents in both directories and

handle the results recursively, following the diff editor rules.

(do_dir_diff,

do_file_diff): New functions.

(arbitrary_diff_walker): Remove function.

(svn_client__arbitrary_nodes_diff): Wrap callbacks using the standard

wrapper. Update caller.

* subversion/tests/cmdline/diff_tests.py

(diff_two_working_copies): Assume that additions are reported as

'revision 0', like how all other diff drivers produce the data.

Assume that the driver properly notices the change from F of a directory

to a file, and as such reports a delete and add.

(But directory deletes can't report property deletes via the old

callbacks api)

(diff_arbitrary_files_and_dirs): Assume that additions are reported as

'revision 0', like how all other diff drivers produce the data.

  1. … 1 more file in changeset.
Get rid of the ever increasing number of private apis in svn_sorts.h by adding

a new private/svn_sorts_private.h file with the private parts and updating the

needed #include-s.

*AND*

Improve error reporting during xml parsing in ra_serf a bit.

For 1.9 the number of private apis in this public header more than doubled,

doubling the original filesize, while our policy is to never add private

functions in public headers.

* build.conf

(libsvn_subr): Add export.

* subversion/include/private/svn_sorts_private.h

New file, copied from ../svn_sorts.h.

* subversion/include/svn_sorts.h

Remove everything possible in our private namespace. Keeping some

references.

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/status.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/lock.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/mod_dav_svn/repos.c

* subversion/svn/log-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/tests/libsvn_subr/priority-queue-test.c

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

Fix includes.

* subversion/libsvn_ra_serf/util.c

(expat_response_handler): Combine XML errors with our custom parser errors

instead of only reporting one or the other.

  1. … 42 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.
Use local style for paths when formatting error messages from the

'svn diff --old A --new B' commands. Follow-up to r1310291.

* subversion/libsvn_client/diff_local.c

(svn_client__arbitrary_nodes_diff): Use local style for paths when formatting

the "not the same node kind" and "not a file or directory" messages.

Patch by: Evgeny Kotkov <evgeny.kotkov{_AT_}visualsvn.com>

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.
Use svn_hash_gets/svn_hash_sets, part 1: #include "svn_hash.h" everywhere

that <apr_hash.h> is included. I assume most of those use APR_HASH_KEY_STRING.

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

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/import.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs/fs-loader.c

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

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/conflicts.c

* subversion/mod_dav_svn/deadprops.c

* subversion/mod_dav_svn/merge.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/repos.c

* subversion/svn/props.c

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

(svn_hash.h): Add #include.

  1. … 22 more files in changeset.
Add depth support to the 'arbitrary diff' mode of 'svn diff'.

Previously, arbitrary diffs could only be made with depth infinity, which

put arbitrary difff mode at odds with other modes in terms of feature parity.

* subversion/include/private/svn_client_private.h

(svn_client__arbitrary_nodes_diff): Add DEPTH parameter, adjust docstring.

* subversion/libsvn_client/diff.c

(do_diff,

do_diff_summarize): Pass DEPTH to svn_client__arbitrary_nodes_diff().

* subversion/libsvn_client/diff_local.c

(do_arbitrary_dirs_diff): Add DEPTH parameter, adjust docstring.

(arbitrary_diff_this_dir): New helper, extract from arbitrary_diff_walker().

The arbitrary_diff_walker() uses svn_io_dir_walk2() which doesn't support

depth restriction. This helper function was factored out so that single

directories can be diffed with distinct levels of depth.

Use the io walker when diffing with depth infinity, else just use

arbitrary_diff_this_dir() since we don't need to walk the filesystem.

(arbitrary_diff_walker): Re-implement as wrapper of arbitrary_diff_this_dir().

(svn_client__arbitrary_nodes_diff): Add DEPTH parameter. If DEPTH is unknown,

default to depth infinity.

  1. … 2 more files in changeset.
* subversion/libsvn_client/diff_local.c

(get_props): Don't ignore upgrade required errors here, as that makes us

produce different results on whether this is a wc or an old wc, and that

is a good reason for producing at least a warning.

Use the --old path in the diffs produced by the arbitrary diff handler,

just like when using --old with the other diff implementations.

This resolves a crash when running

$ svn diff --old dev/README --new dev/build.conf --summarize

* subversion/libsvn_client/diff.c

(do_diff_summarize): Provide the right target to the summarize handler.

* subversion/libsvn_client/diff_local.c

(arbitrary_diff_walker): Use api to detect administrative dir correctly.

(svn_client__arbitrary_nodes_diff): Use path1 as target.

* subversion/svn/diff-cmd.c

(summarize_baton_t): New baton type.

(summarize_xml,

summarize_regular): Use baton type.

(svn_cl__diff): Update caller.

* subversion/tests/cmdline/diff_tests.py

(diff_url_against_local_mods): Extend test to show that in this mode we

see this as a no change.

(diff_arbitrary_files_and_dirs): Update expected result.

  1. … 3 more files in changeset.
In the local-local diff handling, only produce file changed reports if the

file has really changed. When using the builtin diff the result is the same

as the diff library won't find any changes.

* subversion/libsvn_client/diff.c

(explanation): Update to 1.8 truth.

* subversion/libsvn_client/diff_local.c

(includes): Add svn_subst.h

(do_arbitrary_files_diff): Only tell that a file is modified if it

is modified. Not for every existing file.

  1. … 1 more file in changeset.
Following up on r1428366, remove some unused includes from the diff files.

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

(includes):

Remove unused header includes.

  1. … 1 more file in changeset.
Make the new in 1.8 arbritary node diff just another driver of the diff

callback api instead of using internal diff apis to produce some nice output.

This allows reusing this walker for features like the --summarize support.

* subversion/include/private/svn_client_private.h

(svn_client__arbitrary_nodes_diff): New function.

* subversion/libsvn_client/diff.c

(get_props,

do_arbitrary_files_diff,

arbitrary_diff_walker_baton,

arbitrary_diff_walker,

do_arbitrary_dirs_diff,

arbitrary_diff_walker,

do_arbitrary_nodes_diff): Move to diff_local.c

(diff_wc_wc): Remove the arbritrary diff detection from here to ...

(do_diff): ... its caller, here. Trigger behavior from working-working

revision instead of overloading base-working diff in diff_wc_wc.

Reinstate the check for unsupported specific revisions from <= 1.7

in diff_wc_wc, instead of always running the arbritrary diff.

* subversion/libsvn_client/diff_local.c

New file, based on diff.c

(do_arbitrary_files_diff): Remove ignore properties and force binary code.

This is handled by the diff callbacks.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Request working working diff.

  1. … 3 more files in changeset.