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

Changeset 1428526 is being indexed.

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.

Reintegrate the 'uris-as-urls' branch into trunk.

(Merged /subversion/branches/uris-as-urls:r1060426-1064427.)

This should wrap up issue #2028.

  1. … 73 more files in changeset.
Make use of a new function for checking whether all targets are the same

type. A follow-up to r1044028.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Make use of new function

svn_cl__assert_homogeneous_target_type(). Tweak existing logic which

checks to see whether working copy path is present in targets.

Patch by: Noorul Islam K M <noorul{_AT_}collab.net>

(tweaked by me)

* subversion/tests/cmdline/input_validation_tests.py

(invalid_diff_targets): New test, verifying that svn diff copes well

with invalid target combinations.

* subversion/svn/diff-cmd.c

(svn_cl__diff): For consistency with other sub-commands, raise the

SVN_ERR_CL_ARG_PARSING_ERROR if both working copy paths and URLs are

passed, and use the same error message also used elsewhere.

  1. … 1 more file in changeset.
Introduce a new flag --git-diff for svn diff, specifying that we want to use

git's extended diff format.

With the diff format, a delete, copy or move may be described with only a

header. Non-git-aware patch applications can not process such a patch, thus

the need for a flag to stay backward compatible with our old diff format.

With the flag there is no need for the SVN_EXPERIMENTAL_PATCH ifdefs.

Note: We don't yet create diff headers for copied or moved paths.

* subversion/svn/cl.h

(svn_cl__opt_state_t): Add USE_GIT_DIFF_FORMAT member.

* subversion/svn/main.c

(svn_cl__longopt_t): Add OPT_USE_GIT_DIFF_FORMAT.

(svn_cl__options): Add and document the new --git-diff option.

(svn_cl__cmd_table): Make svn diff accept the --git-diff option.

(main): Handle --git-diff options.

* subversion/include/svn_client.h

(svn_client_diff5,

svn_client_diff_peg5): Add USE_GIT_DIFF_FORMAT parameter.

(svn_client_diff4,

svn_client_diff_peg4): Mention in the doc string that

USE_GIT_DIFF_FORMAT defaults to FALSE.

* subversion/libsvn_client/diff.c

(diff_parameters): Add USE_GIT_DIFF_FORMAT member.

(print_git_diff_header_added,

print_git_diff_header_modified,

print_git_diff_header_deleted,

print_git_diff_header_copied,

print_git_diff_header_moved): Remove SVN_EXPERIMENTAL_PATCH ifdefs

(diff_content_changed): Check for USE_GIT_DIFF_FORMAT instead of

having the parts dealing with git diffs inside SVN_EXPERIMENTAL

ifdefs.

(svn_client_diff5,

svn_client_diff_peg5): TODO

* subversion/libsvn_client/deprecated.c

(svn_client_diff4,

svn_client_diff_peg4): Call the new functions with USE_GIT_DIFF_FORMAT

set to FALSE.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Adjust calls to include USE_GIT_DIFF_FORMAT.

* subversion/svn/log-cmd.c

(log_entry_reciever): Adjust callers of svn_client_diff5() and

svn_client_diff_peg5().

  1. … 6 more files in changeset.
Allow overriding the default value of the --extensions option from the

client configuration file.

* subversion/include/svn_client.h

(svn_client_diff5): Document that the diff_options argument is now

allowed to be NULL. This allows clients to say "I have no default

arguments for diff" in an unambiguous way (before this commit,

the CLI client passed an array with zero elements, and other

clients probably do the same).

* subversion/include/svn_config.h

(SVN_CONFIG_OPTION_DIFF_EXTENSIONS): New.

* subversion/libsvn_subr/config_file.c

(svn_config_ensure): Document the new diff-extensions option.

* subversion/libsvn_client/diff.c

(set_up_diff_cmd_and_options): If no diff options are provided, check the

configuration for diff options. If that fails, initialise the options

to an empty array (the client used to initialise this array but is no

longer required to do so).

* subversion/svn/log-cmd.c,

subversion/svn/diff-cmd.c

(log_entry_receiver, svn_cl__diff): Pass NULL diff_options if none were

provided on the command line.

  1. … 5 more files in changeset.
Follow up r948785.

Solve issue #3071 with simple and cleaner approach without revving the

diff APIs.

* subversion/include/svn_client.h

(svn_client_diff5, svn_client_diff_peg5): Remove the parameter added

for --force-internal-diff

* subversion/svn/diff-cmd.c

(svn_cl__diff): Adjust for above change.

* subversion/svn/log-cmd.c

(log_entry_receiver): Adjust for above change.

* subversion/svn/main.c

(main): Set config option of diff command to NULL if the user wants

to force internal diff.

* subversion/libsvn_client/deprecated.c

(svn_client_diff4, svn_client_diff_peg4): Do not pass the extra

argument for diff APIs.

* subversion/libsvn_client/diff.c

(set_up_diff_cmd_and_options): Remove the extra argument and related

logic.

(svn_client_diff5, svn_client_diff_peg5): Remove the extra argument.

Suggested by: rhuijben

  1. … 5 more files in changeset.
Fix issue #3071.

Request enhancement to svn diff to indicate that an external diff-cmd

should NOT be used

* subversion/svn/cl.h

(svn_cl__opt_state_t): Add force internal diff boolean.

* subversion/include/svn_client.h

(svn_client_diff5, svn_client_diff_peg5): Add new parameter to the

function prototype in order to support the new option

--force-internal-diff

* subversion/svn/diff-cmd.c

(svn_cl__diff): Pass new parameter to the diff APIs in order to force

internal diff command.

* subversion/svn/log-cmd.c

(log_entry_receiver): Pass FALSE for force internal diff parameter

to the diff APIs in order preserve old behavior.

* subversion/svn/main.c

(svn_cl__longopt_t): Add new option force internal diff.

(svn_cl__options): Add description for the new diff option.

(svn_cl__cmd_table): Add new option force internal diff to the diff

command.

(main): Enable force internal diff option based on user input and

check for mutually exclusive options '--diff-cmd' and

'--force-internal-diff'

* subversion/libsvn_client/deprecated.c

(svn_client_diff4, svn_client_diff_peg4): Pass FALSE for force

internal diff paramater to get the old behavior.

* subversion/libsvn_client/diff.c

(set_up_diff_cmd_and_options): Check for force internal diff option

and get rid of external diff command if required.

(svn_client_diff5, svn_client_diff_peg5): Add support for the new

option --force-internal-diff

  1. … 6 more files in changeset.
Avoid casting away "const" in a few places.

* subversion/include/private/svn_skel.h,

subversion/libsvn_subr/skel.c

(svn_skel__append): Remove "const" from the skel parameter, because, even

though it is not *modified* by this function, it must be *modifiable* in

order to be part of the list. Thus, no longer cast away "const" in the

implementation.

* subversion/libsvn_fs_base/revs-txns.c

(txn_body_cleanup_txn_copy, txn_body_cleanup_txn_changes,

txn_body_delete_txn): Dereference the "baton" parameter instead of

type-casting it to get the desired "const char *" pointer ...

(svn_fs_base__purge_txn): ... and here, in the only caller, take the

address of the "const char *" variable instead of casting away "const"

to convert it to a "void *" baton.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_read_conflict_victims): Use an intermediate variable to avoid

casting away "const".

* subversion/svn/diff-cmd.c

(summarize_xml, summarize_regular): Dereference the "baton" parameter

instead of type-casting it to get the desired "const char *" pointer ...

(svn_cl__diff): ... and here, in the only caller, take the address of the

"const char *" variable instead of casting away "const" to convert it to

a "void *" baton.

  1. … 4 more files in changeset.
Test out my new and fancy ASF commit priviledges by changing the copyright

wording in our license headers to reflect ownership by the ASF.

* NOTICE:

Change terminology to ASF, and update a link.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the ASF, and update the project website.

* everywhere:

Change license text to reflect ASF ownership.

  1. … 891 more files in changeset.
Replace deprecated svn_path_join().

* subversion/svn/cl.h

(svn_cl__path_join): New.

* subversion/svn/util.c

(svn_cl__path_join): Wrap svn_path_join().

* subversion/svn/diff-cmd.c

(svn_cl__diff, summarize_xml, summarize_regular): Replace svn_path_join()

with svn_cl__path_join() since the resulting path is allowed to be both

uri and dirent.

Patch by: Daniel Näslund <daniel{_AT_}longitudo.com>

Suggested by: julianfoad

  1. … 2 more files in changeset.
More work on issue #2543 "Inconsistent svn diff after rename".

Overloading the meaning of --notice-ancestry was not a good idea.

Instead, add a new option called --show-copies-as-adds (option name

suggested by danielsh), and pass the new flag through libsvn_client

and libsvn_wc APIs. This also changes the default behaviour of svn diff

back to what it was before r39680: svn diff now compares copies to their

source again by default.

The new option works for the WC->WC case only for now, so re-adjust

some tests which were already expecting other cases to work.

* subversion/include/svn_client.h

(svn_client_diff5, svn_client_diff_peg5): New parameter show_copies_as_adds,

API bump to version 5.

(svn_client_diff4, svn_client_diff_peg4): Deprecate.

* subversion/include/svn_wc.h

(svn_wc_get_diff_editor6, svn_wc_diff6): New parameter show_copies_as_adds.

(svn_wc_get_diff_editor5, svn_wc_diff5): Update docstrings.

* subversion/libsvn_client/deprecated.c

(svn_client_diff4, svn_client_diff_peg4): Wrappers around the version 5

functions.

* subversion/libsvn_client/diff.c

(diff_parameters): New show_copies_as_adds member.

(diff_wc_wc): New show_copies_as_adds parameter, pass it on to svn_wc_diff6().

(diff_repos_wc): Revert ancestry-heeding changes made in r39720, so that

this function resolves peg revisions by default again.

Pass show_copies_as_adds=FALSE to svn_wc_get_diff_editor6() for now.

(do_diff): Pass show_copies_as_adds parameter to diff_wc_wc().

(svn_client_diff4, svn_client_diff_peg4): Rename to ...

(svn_client_diff5, svn_client_diff_peg5): ... these, and propagate

show_copies_as_adds paramter into diff_params.

* subversion/libsvn_wc/deprecated.c

(svn_wc_get_diff_editor5, svn_wc_diff5): Pass FALSE for show_copies_as_adds.

* subversion/libsvn_wc/diff.c

(edit_baton): Add show_copies_as_adds member, tweak doc string of

ignore_ancestry member.

(make_edit_baton): New parameter show_copies_as_adds, store its value in

created baton.

(file_diff): Treat copies as schedule-normal files if eb->show_copies_as_adds

is FALSE. Don't use the eb->ignore_ancestry for this purpose.

(svn_wc_get_diff_editor6, svn_wc_diff6): New parameter show_copies_as_adds,

pass it on to make_edit_baton().

* subversion/svn/cl.h

(svn_cl__opt_state_t): New member show_copies_as_adds.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Call svn_client_diff5() and svn_client_diff_peg5().

Remove unnecessary warning about "--notice-ancestry" option.

* subversion/svn/main.c

(svn_cl__longopt_t): New member opt_show_copies_as_adds,

(svn_cl__options): Add "--show-copies-as-adds" option.

(svn_cl__cmd_table): Make "svn diff" accept "--show-copies-as-adds".

(main): Set opt_state.show_copies_as_adds depending on the new option.

* subversion/tests/cmdline/diff_tests.py

(diff_renamed_file), diff_base_repos_moved: Adjust to new behaviour.

Add tests for cases which should work eventually but don't work yet,

all commented out.

(diff_within_renamed_dir, diff_nonrecursive_checkout_deleted_dir):

Adjust to new behaviour.

* subversion/tests/cmdline/merge_tests.py

(merge_in_new_file_and_diff): Pass "--show-copies-as-adds" so that

this test passes with the expected test output as modified in r39680.

  1. … 10 more files in changeset.
Follow-up to r39680:

Continue work on issue #2543 "Inconsistent svn diff after rename"

Make repository->WC diff consistent with WC->WC diff, by diffing

files added-with-history against the empty file by default.

As with WC->WC diffs, the --notice-ancestry option now triggers the

old behaviour of diffing against the copyfrom source.

* subversion/libsvn_client/diff.c

(diff_repos_wc): When doing a pegged diff, if ignoring ancestry,

just use the target's URL as retrieved from the entry unchanged.

Else, determine the pegged target's URL under consideration of history

as before. While here, add a missing svn_error_return().

* subversion/svn/diff-cmd.c

(svn_cl__diff): If a pegged diff fails because a path could not be found,

suggest trying the --notice-ancestry option. This should help users

migrating to the new default behaviour, which might yield 'path not found'

errors during commands such as 'svn diff -r42 foo' if foo did not exist

under the name 'foo' in revision 42.

* subversion/tests/cmdline/diff_tests.py

(diff_renamed_file, diff_within_renamed_dir,

diff_base_repos_moved): Test the Repos->WC diff case both with and

without ancestry, now that we support both.

(diff_nonrecursive_checkout_deleted_dir): Pass --notice-ancestry to avoid

a 'path not found' error making the test fail.

  1. … 2 more files in changeset.
Entirely remove support for SVNPATCH blocks in patches from 'svn patch',

as merged to trunk in r36404. Only support for unidiff application remains.

This shaves about 5000 lines of code from Subversion.

For related discussion, see:

Date: Wed, 26 Aug 2009 16:24:54 +0100

From: Stefan Sperling <stsp@elego.de>

To: dev@subversion.tigris.org

Subject: reducing code bloat by removing svnpatch? (except unidiff)

Message-ID: <20090826152453.GH11667@jack.stsp.name>

http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2387601

* subversion/libsvn_subr/patch.c,

subversion/libsvn_wc/patch.c,

subversion/include/private/svn_patch.h: Remove.

* subversion/tests/cmdline/diff_tests.py

(): Remove now unused imports.

(diff_svnpatch): Remove this test.

(test_list): Track removed test.

* subversion/tests/cmdline/patch_tests.py

(svn_patch_encode, patch_basic, patch_copy_and_move): Remove

(test_list): Track removed tests.

* subversion/svn/patch-cmd.c

(svn_cl__patch): Track removed arguments of svn_client_patch().

* subversion/svn/cl.h

(svn_cl__opt_state_t): Remove svnpatch member.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Track removed member of svn_cl__opt_state_t.

Call svn_client_diff4() instead of svn_client_diff5()

and svn_client_diff_peg4() instead of svn_client_diff_peg5().

* subversion/svn/main.c

(svn_cl__longopt_t): Remove opt_svnpatch_format and opt_from_source members,

the latter of which was added as part of r36404 but never used anywhere.

(svn_cl__options, svn_cl__cmd_table, main): Remove the --svnpatch command

line option. Update the help output for 'svn patch'.

* subversion/libsvn_wc/deprecated.c

(svn_wc_get_diff_editor5): Track removed arguments of svn_wc_get_diff_editor6.

(svn_wc_diff5): Track removed arguments of svn_wc_diff6.

* subversion/include/svn_wc.h,

subversion/libsvn_wc/diff.c

(): Don't include now unused headers.

(edit_baton): Remove svnpatch_stream, diff_targets, diff_editor,

and next_token members.

(dir_baton): Remove token member.

(file_baton): Remove dir_baton and token members.

(make_editor_baton, make_dir_baton, make_file_baton, file_diff,

directory_elements_diff, report_wc_file_as_added,

report_wc_directory_as_added, open_root, delete_entry, add_directory,

open_directory, close_directory, add_file, open_file, close_file,

close_edit, svn_wc_get_diff_editor6, svn_wc_diff6): Remove code related

exclusively to svnpatch, and track removed members and changed arguments.

(make_token, dir_diff, transmit_svndiff, transmit_prop_deltas,

svnpatch_open_root, svnpatch_open_directory, svnpatch_close_directory,

svnpatch_add_directory, svnpatch_change_dir_prop, svnpatch_open_file,

svnpatch_add_file, svnpatch_close_file, svnpatch_change_file_prop,

svnpatch_delete_entry, svndiff_write_handler, svndiff_close_handler,

svnpatch_apply_textdelta, svnpatch_close_edit, get_svnpatch_diff_editor,

path_driver_cb_baton, path_driver_cb_func): Remove.

* subversion/libsvn_client/deprecated.c

(svn_client_diff4, svn_client_diff_peg4): Remove, have been un-deprecated.

* subversion/libsvn_client/repos_diff.c

(SAVEPOINT_RELEASED): Remove.

(edit_baton): Remove svnpatch_file, svnpatch_stream, savepoint,

svnpatch_editor, and next_token members.

(dir_baton): Remove token and savepoint members.

(file_baton): Remove dir_baton, token, and savepoint members.

(make_token): Remove.

(make_editor_baton, make_dir_baton, close_edit, open_root,

delete_entry, add_directory, open_directory, add_file, open_file,

close_file, close_directory, change_file_prop, change_dir_prop,

close_edit, svn_client__get_diff_editor): Remove code related

exclusively to svnpatch, and track removed members and changed arguments.

(make_token, svnpatch_savepoint svnpatch_release_savepoint, svnpatch_rollback,

svnpatch_close_directory, svnpatch_change_dir_prop, svnpatch_close_file,

svnpatch_change_file_prop, svnpatch_delete_entry, svndiff_write_handler,

svndiff_close_handler, svnpatch_apply_textdelta, svnpatch_close_edit,

transmit_svndiff, get_svnpatch_editor): Remove.

* subversion/libsvn_client/client.h

(SVN_CLIENT_SVNPATCH_VERSION): Remove.

(svn_client__get_diff_editor): Remove svnpatch_file argument.

* subversion/libsvn_client/merge.c

(drive_merge_report_editor): Track argument removed from

svn_client__get_diff_editor.

(do_file_merge): Remove a useless XXX comment, the API is now in trunk.

* subversion/libsvn_client/patch.c

(SVNPATCH_DELETE_WHEN, equal_string, ENSURE_VALID_REVISION_KINDS,

patch_cmd_baton, dry_run_deleted_p, merge_props_changed, merge_file_changed,

merge_file_added, merge_file_deleted, merge_dir_added,

merge_delete_notify_baton_t, merge_delete_notify_func, merge_dir_deleted,

patch_callbacks, edit_baton, dir_baton, file_baton, make_dir_baton,

make_file_baton, create_empty_file, get_path_access, get_parent_access,

get_empty_file, dry_run_deletions_hash, open_root, delete_entry,

add_directory, open_directory, add_file, open_file, window_handler,

apply_textdelta, close_file, close_directory, change_file_prop,

change_dir_prop, close_edit, make_editor_baton, extract_svnpatch): Remove.

(svn_client__patch): Remove now unused force argument, and anything

related to svnpatch.

* subversion/include/svn_client.h,

subversion/libsvn_client/diff.c

(): Don't include now unused headers.

(SVNPATCH_DELETE_WHEN): Remove.

(diff_cmd_baton): Remove svnpatch_file member.

(dump_svnpatch): Remove.

(diff_wc_wc): Track removed argument of svn_wc_diff6.

(diff_repos_repos, diff_repos_wc): Track removed argument of

svn_client__get_diff_editor.

(do_diff): Remove call to dump_svnpatch.

(svn_client_diff5): Rename to ...

(svn_client_diff4): ... this, and revert the parameter addition that

caused it to be bumped, and remove any code related to svnpatch.

(svn_client_diff_peg5): Rename to ...

(svn_client_diff_peg4): ... this, and as above.

  1. … 18 more files in changeset.
Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.

* LICENSE: New.

* COPYING,

subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the SVN Corp, and that it contains contributions from

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

Change copyright notices in file headers to reflect the Apache 2.0 license.

  1. … 882 more files in changeset.