Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1668625 is being indexed.

Implement initial support for 'svn diff --summarize --ignore-properties'.

This is part of issue #4567.

We filter property changes, and paths which only have property changes, in the

svn client during diff display. This is not ideal because we want this feature

to be available in the API and we want to avoid adding further special cases

for different diff modes.

However, this simple patch makes a potential 1.9.x backport easier.

An implementation in libsvn_client is planned for later on trunk (1.10-dev)

and will supersede this patch.

See http://colabti.org/irclogger/irclogger_log/svn-dev?date=2015-03-23#l35

for IRC discussion.

Suggested by: julianfoad

Chris <devnullaccount@yahoo.se>

http://mail-archives.apache.org/mod_mbox/subversion-dev/201503.mbox/%3C1427103800.22413.YahooMailBasic%40web121602.mail.ne1.yahoo.com%3E

* subversion/svn/diff-cmd.c

(summarize_baton_t): Add ignore_properties flag.

(summarize_xml): Filter paths with no text/tree (i.e. property-only) changes.

Always show property modification status as "none".

(summarize_regular): Filter paths with no text/tree (i.e. property-only) changes.

Always show a blank property modification column.

(svn_cl__diff): Set ignore_properties flag in summarize baton.

* subversion/tests/cmdline/diff_tests.py

(diff_summarize_ignore_properties, test_list): New test.

  1. … 1 more file in changeset.
Following up on r1668595, fix textual argument reference.

Found by: julianfoad

* subversion/svn/diff-cmd.c

(svn_cl__diff): Pass right argument name to error function.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Return an error on using many ignored arguments.

Fix a few more cases where we don't handle no-config properly

(found via code review)

* subversion/svn/diff-cmd.c

(svn_cl__diff): Just to be sure, check config for NULL like in other places.

* subversion/svn/util.c

(svn_cl__make_log_msg_baton): Avoid not setting struct members when config

unavailable (and use pcalloc to avoid future similar problems)

  1. … 1 more file 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.
Use SVN_VA_NULL instead of plain NULL in variable-arguments lists in all

remaining cases, as far as I can discover, following r1536307 (introducing

SVN_VA_NULL) and r1543394 (warning about missing or inappropriate sentinels for

some Subersion functions).

[Lots of implementation files]: Replace NULL with SVN_VA_NULL in function

calls with variable argument lists.

  1. … 37 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.
Implement a new 'diff-ignore-content-type' runtime configuration

variable which saves folks from having to include --force when trying

to see differences of binary files. This is handy when Subversion is

configured via 'diff-cmd' to use an external diff tool that can handle

binary diffs.

NOTE: This option is parsed in 'svn' (not down in the client layer)

and used to control an existing boolean function parameter.

* subversion/include/svn_config.h

(SVN_CONFIG_OPTION_DIFF_IGNORE_CONTENT_TYPE): New configuration

token #define.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Check the runtime configuration area to see if diff

operations should ignore the content-type of files.

* subversion/libsvn_subr/config_file.c

(svn_config_ensure): Add runtime configuration file template matter

for the new 'diff-ignore-content-type' option.

* subversion/tests/cmdline/diff_tests.py

(diff_force): Tweak this test to try the new runtime config option

as well as '--force', verifying that both allow the display of

binary diffs.

* CHANGES

Note this change.

  1. … 4 more files in changeset.
Make 'svn diff --old=FOO --new=BAR' default to WORKING revision rather than

BASE for the old target if the new target is explicitly specified, so that

it is the reverse of the diff from 'svn diff --old=BAR --new=FOO'.

Patch by: Alexey Neyman <stilor{_AT_}att.net>

* subversion/svn/diff-cmd.c

(svn_cl__diff): Change defaults as described and simplify the logic.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Simplify a tiny bit more, following r1442659.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Simplify logic introduced in r1442640.

Tell people who pass mixed target types to 'svn diff' synopsis 1 that they

are probably looking for one of the '--old X --new Y' invocations.

Suggested by: Alexey Neyman

* subversion/svn/diff-cmd.c

(svn_cl__diff): Wrap the error from svn_cl__assert_homogeneous_target_type()

with a somewhat verbose but informative message.

Make 'svn diff PATH URL' and 'svn diff URL PATH', where exactly two targets

are given and one target is a URL, a new shorthand invocation syntax for

'svn diff --old PATH --new URL' and 'svn diff --old URL --new PATH',

respectively.

These invocations used to error out with a "cannot mix repository and working

copy targets" before. User may intuitively try to diff a working copy to a URL

in the manner allowed by these new shorthands, so this is a usability

enhancement (principle of least surprise).

Suggested by: Alexey Neyman

* subversion/svn/diff-cmd.c

(svn_cl__diff): Map a 2-target diff invocation where one target is a URL and

the other target is a path to 'svn diff --old TARGET1 --new TARGET2'.

* subversion/svn/svn.c

(svn_cl__cmd_table): Update 'svn help diff' output accordingly.

  1. … 1 more file in changeset.
To finally close issue #3009, and for similarity with 'svnlook diff', add a

--no-diff-added output filtering argument to 'svn diff'.

* subversion/include/svn_client.h

(svn_client_diff6,

svn_client_diff_peg6): Update arguments.

* subversion/libsvn_client/deprecated.c

(svn_client_diff5,

svn_client_diff_peg5): Update caller.

* subversion/libsvn_client/diff.c

(diff_cmd_baton): Add variable.

(diff_file_added): Filter diff if requested.

(svn_client_diff6,

svn_client_diff_peg6): Set value in baton.

* subversion/svn/cl.h

(svn_cl__opt_state_t.diff): Add variable.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Update caller.

* subversion/svn/log-cmd.c

(svn_cl__log): Update caller.

* subversion/svn/svn.c

(svn_cl__longopt_t): Add value.

(svn_cl__options): Add argument.

(svn_cl__cmd_table): Declare --no-diff-added for diff.

(sub_main): Parse argument.

  1. … 6 more files in changeset.
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.
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.
Group all the command-line options that are specific to 'diff' together in

the 'svn' command-line client code, for clarity. No functional change.

* subversion/svn/cl.h

(svn_cl__opt_state_t): Move all diff-specific options into a sub-struct.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Adjust references to refer to the sub-struct.

* subversion/svn/log-cmd.c

(svn_cl__log): Same.

* subversion/svn/main.c

(svn_cl__longopt_t, svn_cl__options): Group diff options together.

(main): Adjust references to refer to the sub-struct.

  1. … 3 more files in changeset.
Add a new --properties-only option to 'svn diff' to show only property changes.

This is the inverse of --ignore-properties. The two options are mutually

exclusive.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Pass the properties_only option to the client layer.

* subversion/svn/main.c

(svn_cl__longopt_t, svn_cl__options, svn_cl__cmd_table): Add a new

--properties-only option. The internal flag is called opt_properties_only".

* subversion/svn/log-cmd.c

(log_entry_receiver): When showing diffs, set properties_only to FALSE.

* subversion/svn/cl.h

(svn_cl__opt_state_t): New properties_only option.

* subversion/libsvn_client/diff.c

(diff_cmd_baton): Add properties_only flag.

(diff_content_changed): Do nothing if properties_only is set.

(svn_client_diff6, svn_client_diff_peg6): New properties_only parameter.

Raise an error if both ignore_properties and properties_only are set.

* subversion/libsvn_client/deprecated.c

(svn_client_diff5, svn_client_diff_peg5): Pass FALSE for properties_only.

* subversion/include/svn_client.h

(svn_client_diff6, svn_client_diff_peg6): Update declarations and docstring.

  1. … 6 more files in changeset.
Rename the use_patch_diff_format variable in the 'svn' client code to

patch_compatible. The new name matches the corresponding command line option.

No functional change.

* subversion/svn/main.c

(svn_cl__longopt_t, svn_cl__options, svn_cl__cmd_table, main): Rename

use_patch_diff_format to patch_compatible.

* subversion/svn/cl.h

(svn_cl__opt_state_t): Rename use_patch_diff_format to patch_compatible.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Track above rename.

  1. … 2 more files in changeset.
Rename ignore_prop_diff and ignore_props variables in the 'svn' client

code to ignore_properties. The new name matches the corresponding command

line option.

No functional change.

* subversion/svn/main.c

(svn_cl__longopt_t, svn_cl__options, svn_cl__cmd_table, main): Rename

opt_ignore_props to opt_ignore_properties.

* subversion/svn/cl.h

(svn_cl__opt_state_t): Rename ignore_props to ignore_properties.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Track above rename, and rename the local variable

ignore_prop_diff to ignore_properties.

  1. … 2 more files in changeset.
Prevent out-of-bounds array access during 'svn diff' arguments processing.

* subversion/svn/diff-cmd.c

(svn_cl__diff): In the 'svn diff --old X --new Y' case, the parsed target

array might contain less than 2 targets if X and/or Y were skipped by

svn_cl__args_to_target_array_print_reserved(), e.g. because either or

both X and Y were .svn directories. Add a check that ensures we got

at least two targets -- any additional arguments are interpreted as

relative to X and Y (as explained by 'svn help diff').

Rename the new --no-diff-properties option to --ignore-properties.

This allows the option to be re-used by other subcommands in the future.

Suggested by: hwright

* subversion/svn/cl.h

(svn_cl__opt_state_t): Rename no_diff_props to ignore_props.

* subversion/svn/main.c

(svn_cl__longopt_t, svn_cl__cmd_table): Rename opt_no_diff_props to

opt_ignore_props.

(svn_cl__options): Rename --no-diff-properties to --ignore-properties

and update a reference to the old name in the help text of 'svn diff'.

(main): Track renamed fields.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Track renamed fields.

  1. … 2 more files in changeset.
Add --no-diff-properties and --patch options to 'svn diff'.

The --patch option implies --no-diff-properties and --show-copies-as-adds.

These options are useful when creating patches for consumers that

do not understand or do not care about Subversion properties.

Patch by: Alexey Neyman <stilor@att.net>

* subversion/svn/cl.h

* subversion/svn/main.c

New options, --no-diff-properties and --patch for svn diff.

* subversion/include/svn_client.h

(svn_client_diff6,svn_client_diff_peg6): New argument, ignore_prop_diff.

(svn_client_diff5,svn_client_diff_peg5): Update comments.

* subversion/libsvn_client/deprecated.c

(svn_client_diff5,svn_client_diff_peg5): Pass FALSE as ignore_prop_diff.

* subversion/libsvn_client/diff.c

(diff_cmd_baton): New field, ignore_prop_diff.

(diff_props_changed): Do nothing if diff_cmd_baton->ignore_prop_diff is set.

(svn_client_diff6,svn_client_diff_peg6): Pass ignore_prop_diff downstream

via diff_cmd_baton.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Handle --patch and --no-diff-properties.

* subversion/svn/log-cmd.c

(log_entry_receiver): Request property changes from svn_client_diff6.

  1. … 6 more files in changeset.
Reintegrate integrate-string-improvements branch into /trunk.
  1. … 83 more files in changeset.
* subversion/svn/diff-cmd.c

(svn_cl__diff): Remove an unused variable and update a comment, following

r1171713.

Make the client diff output streamy, rather than requiring an APR file.

(Our own consumer of this API just uses stdout, so this doesn't have much

effect there.)

* subversion/include/svn_client.h

(svn_client_diff6): New.

(svn_client_diff5): Deprecate.

(svn_client_diff_peg6): New.

(svn_client_diff_peg5): Deprecate.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Update callers.

* subversion/libsvn_client/deprecated.c

(svn_client_diff5, svn_client_diff_peg5): New deprecation wrappers.

* subversion/libsvn_client/diff.c

(file_printf_from_utf8): Remove.

(display_mergeinfo_diff, display_prop_diffs): Accept and use a stream

instead of a file.

(diff_cmd_baton): Change file handles to streams.

(diff_content_changed): Use streams, and create a temp file for interfacing

with an external diff tool.

(diff_file_deleted): Update params.

(svn_client_diff6): Renamed and updated from svn_client_diff5().

(svn_client_diff_peg6): Renamed and updated from svn_client_diff_peg5().

  1. … 3 more files in changeset.
The semi-annual trailing whitespace cleansing ritual.

* everywhere:

for extsn in c h cpp java py pl rb; do

sed -i -e 's/[ \t]*$//' `find . -name "*.$extsn" | xargs grep '[ \t]$' -l`

done

  1. … 144 more files in changeset.
Fix issue #3702 'Unable to perform case-only rename on windows' by adding a

new flag to svn_client_args_to_target_array (revving it in the process), so

it can perform specialized case-canonicalization behavior for supporting

case-only renames.

* subversion/tests/cmdline/copy_tests.py

(case_only_rename): Remove XFail marker. Fix issue description according

to the changed summary of issue #3702.

* subversion/include/svn_client.h

(svn_client_args_to_target_array): Deprecate, succeeded by ...

(svn_client_args_to_target_array2): ... new function, carrying a new

argument KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION.

* subversion/libsvn_client/cmdline.c

(svn_client_args_to_target_array2): Make use of new flag

KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION to undo truepath-conversion of

the last of 2 targets if they both have the same 'truepath'.

* subversion/libsvn_client/deprecated.c

(svn_client_args_to_target_array): Implement deprecated wrapper.

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

(test_args_to_target_array): Adjust caller, passing FALSE for

KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION.

[in subversion/svn]

* add-cmd.c, blame-cmd.c, cat-cmd.c, changelist-cmd.c, checkout-cmd.c,

cleanup-cmd.c, commit-cmd.c, copy-cmd.c, delete-cmd.c, diff-cmd.c,

export-cmd.c, import-cmd.c, info-cmd.c, list-cmd.c, lock-cmd.c, log-cmd.c,

merge-cmd.c, mergeinfo-cmd.c, mkdir-cmd.c, patch-cmd.c, propdel-cmd.c,

propedit-cmd.c, propget-cmd.c, proplist-cmd.c, propset-cmd.c,

relocate-cmd.c, resolve-cmd.c, resolved-cmd.c, revert-cmd.c, status-cmd.c,

switch-cmd.c, unlock-cmd.c, update-cmd.c, upgrade-cmd.c:

Adjust callers, passing FALSE for KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION.

* move-cmd.c: Adjust caller, passing TRUE for

KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION.

* cl.h

(svn_cl__args_to_target_array_print_reserved): Add new parameter

KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION.

* util.c

(svn_cl__args_to_target_array_print_reserved): Add new parameter

KEEP_LAST_ORIGPATH_ON_TRUEPATH_COLLISION, passing it to

svn_client_args_to_target_array2.

  1. … 41 more files in changeset.
Fix issue #3826 ("`svn diff local_absolutepath` from inside a local

working copy is broken").

* subversion/svn/diff-cmd.c

(svn_cl__diff): Only convert a user-provided target path to a

relpath when we're about to tack it onto a base URL; absolute

paths make fine local targets.

* subversion/tests/cmdline/diff_tests.py

(diff_abs_localpath_from_wc_folder): Remove XFail() decorator.

  1. … 1 more file in changeset.
Follow-up to r1064436:

Fix a copy-pasto that caused an assertion failure with

"svn diff --old=. --new=^/subversion/trunk":

assertion "svn_dirent_is_canonical(base, pool)" failed: file \

"subversion/libsvn_subr/dirent_uri.c", line 1010, function "svn_dirent_join"

* subversion/svn/diff-cmd.c

(svn_cl__diff): We want to check if the new target is a URL. We've already

checked the old one.