Checkout Tools
  • last updated 5 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
* everywhere: Run tools/dev/remove-trailing-whitespace.sh to remove

trailing whitespace before we branch 1.14.

  1. … 105 more files in changeset.
* subversion/include/svn_diff.h

(svn_patch_t): Tweak doc string.

* subversion/include/svn_diff.h

(svn_patch_t): Fix copy&pasto.

Found by: danielsh

In the diff parser: parse the symlink status from the mode flags.

* subversion/include/svn_diff.h

(svn_patch_t): Rename executable bits to _bits and add

symlink bit variables.

* subversion/libsvn_client/patch.c

(contradictory_executability): Update caller.

(init_patch_target): Don't call contradictory_executability when no

executable change is described in the mode change. Update caller.

(apply_one_patch): Update caller.

* subversion/libsvn_diff/parse-diff.c

(parse_bits_into_executability): Rename to...

(parse_git_mode_bits): ... this and also parse symlink info.

(git_old_mode,

git_new_mode,

git_new_file,

git_deleted_file): Update caller.

(svn_diff_parse_next_patch): Update initialization. Reverse new bits

when using a reverse diff.

* subversion/tests/libsvn_diff/parse-diff-test.c

(test_parse_git_diff,

test_parse_git_tree_and_text_diff): Update caller. Add assertions.

  1. … 3 more files in changeset.
patch: Parse 'old mode' / 'new mode' line from git diffs and translate them

to svn:executable propchanges.

This merges the 'patch-exec' branch into trunk.

---

The following are the major changes. See the branch for detailed changes.

* subversion/include/svn_diff.h

(svn_patch_t.old_executable_p, svn_patch_t.new_executable_p): New members.

* subversion/libsvn_client/patch.c

(contradictory_executability): New function.

(init_patch_target, apply_one_patch):

Translate mode changes to svn:executable changes.

* subversion/include/private/svn_diff_private.h

(svn_diff_hunk__create_adds_single_line,

svn_diff_hunk__create_deletes_single_line): New functions.

* subversion/libsvn_diff/parse-diff.c

(add_or_delete_single_line,

svn_diff_hunk__create_adds_single_line,

svn_diff_hunk__create_deletes_single_line): New functions.

(parse_state::state_old_mode_seen,

parse_state::state_git_mode_seen): New enumerators.

(parse_bits_into_executability, git_old_mode, git_new_mode): New functions.

(git_deleted_file, git_new_file): Parse file mode.

(transitions): Parse "old mode" and "new mode" lines.

* subversion/tests/cmdline/patch_tests.py,

* subversion/tests/libsvn_diff/parse-diff-test.c:

Add unit tests.

  1. … 7 more files in changeset.
Complete the parsing routines for parsing git-like binary blobs. This patch

completes the parsing, but leaves out the patch application code as that

needs a bit more work before committing.

* subversion/include/svn_diff.h

(svn_diff_get_binary_diff_original_stream,

svn_diff_get_binary_diff_result_stream): New functions.

* subversion/include/svn_error_codes.h

(SVN_ERR_DIFF_UNEXPECTED_DATA): New error.

* subversion/libsvn_diff/binary_diff.c

(includes): Add svn_private_config.h and diff.h.

(base85_value,

svn_diff__base85_decode_line): New functions.

* subversion/libsvn_diff/diff.h

(svn_diff__base85_decode_line): New function.

* subversion/libsvn_diff/parse-diff.c

(includes): Add svn_private_config.h and diff.h.

(base85_baton_t): New struct.

(read_handler_base85,

close_handler_base85,

get_base85_data_stream): New functions.

(length_verify_baton_t): New struct.

(read_handler_length_verify,

close_handler_length_verify,

get_verify_length_stream): New functions.

(svn_diff_get_binary_diff_original_stream,

svn_diff_get_binary_diff_result_stream): New functions.

(parse_binary_patch): Properly set apr_file in binary patch. Switch src and

dest to the same order as used by git.

* subversion/tests/cmdline/patch_tests.py

(patch_binary_file): Update expected ordering.

  1. … 5 more files in changeset.
Start parsing binary diffs in svn patch. This handles the blocks and

records the locations for future processing.

* subversion/include/svn_diff.h

(svn_diff_binary_patch_t): New opaque struct.

(svn_patch_t): Extend struct with pointer.

* subversion/libsvn_diff/binary_diff.c

(svn_diff_output_binary): Don't write unneeded blank line that looks

ugly before a property diff.

* subversion/libsvn_diff/parse-diff.c

(svn_diff_binary_patch_t): New struct.

(parse_state): Add value.

(binary_patch_start): New function.

(parse_binary_patch): New function.

(transitions): Add binary batch handling.

(svn_diff_parse_next_patch): Parse binary diffs.

* subversion/tests/cmdline/patch_tests.py

(patch_binary_file): Tweak expected result. One index line for one target.

  1. … 3 more files in changeset.
Documentation fixes to the 1.9 svn_diff API. No functional change.

* subversion/include/svn_diff.h

(svn_diff_output2,

svn_diff_file_output_unified4): Document cancelation functionality.

(svn_diff_file_output_unified3): Fix reference to bumped API.

(svn_diff_file_output_merge3: Document cancelation functionality.

(svn_diff_output_binary): Same. Fix a typo.

(svn_diff_mem_string_output_unified3,

svn_diff_mem_string_output_merge3): Document cancelation functionality.

Update pool argument names in functions added to the svn_diff.h API in 1.9.

No functional change intended.

* subversion/include/svn_diff.h

(svn_diff_file_output_merge3,

svn_diff_mem_string_output_unified3,

svn_diff_mem_string_output_merge3): The pool argument is a SCRATCH_POOL.

Also, document it.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_output_merge3): Update implementation.

* subversion/libsvn_diff/diff_memory.c

(svn_diff_mem_string_output_unified3,

svn_diff_mem_string_output_merge3): Same.

  1. … 2 more files in changeset.
Apply the standard pre-branch whitespace cleanup via

tools/dev/remove-trailing-whitespace.zsh

There should be no functional changes.

* .ycm_extra_conf.py

* build/generator/gen_win.py

* build/generator/gen_win_dependencies.py

* subversion/bindings/javahl/native/EditorProxy.h

* subversion/bindings/javahl/native/StateReporter.cpp

* subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp

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

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

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

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

* subversion/bindings/swig/ruby/test/test_fs.rb

* subversion/bindings/swig/ruby/test/util.rb

* subversion/bindings/swig/ruby/test/windows_util.rb

* subversion/include/private/svn_fs_fs_private.h

* subversion/include/private/svn_packed_data.h

* subversion/include/private/svn_repos_private.h

* subversion/include/private/svn_sorts_private.h

* subversion/include/private/svn_subr_private.h

* subversion/include/private/svn_wc_private.h

* subversion/include/svn_auth.h

* subversion/include/svn_cache_config.h

* subversion/include/svn_client.h

* subversion/include/svn_cmdline.h

* subversion/include/svn_diff.h

* subversion/include/svn_fs.h

* subversion/include/svn_io.h

* subversion/include/svn_ra.h

* subversion/include/svn_repos.h

* subversion/include/svn_string.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/update.c

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_fs/cached_data.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/hotcopy.c

* subversion/libsvn_fs_fs/id.c

* subversion/libsvn_fs_fs/index.c

* subversion/libsvn_fs_fs/index.h

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/low_level.c

* subversion/libsvn_fs_fs/low_level.h

* subversion/libsvn_fs_fs/pack.c

* subversion/libsvn_fs_fs/recovery.c

* subversion/libsvn_fs_fs/rev_file.c

* subversion/libsvn_fs_fs/revprops.c

* subversion/libsvn_fs_fs/revprops.h

* subversion/libsvn_fs_fs/stats.c

* subversion/libsvn_fs_fs/transaction.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_fs_fs/verify.c

* subversion/libsvn_fs_x/cached_data.c

* subversion/libsvn_fs_x/changes.c

* subversion/libsvn_fs_x/dag.h

* subversion/libsvn_fs_x/fs.h

* subversion/libsvn_fs_x/fs_id.c

* subversion/libsvn_fs_x/fs_x.c

* subversion/libsvn_fs_x/hotcopy.c

* subversion/libsvn_fs_x/hotcopy.h

* subversion/libsvn_fs_x/index.c

* subversion/libsvn_fs_x/index.h

* subversion/libsvn_fs_x/lock.c

* subversion/libsvn_fs_x/lock.h

* subversion/libsvn_fs_x/low_level.c

* subversion/libsvn_fs_x/low_level.h

* subversion/libsvn_fs_x/noderevs.c

* subversion/libsvn_fs_x/pack.c

* subversion/libsvn_fs_x/reps.c

* subversion/libsvn_fs_x/rev_file.c

* subversion/libsvn_fs_x/revprops.c

* subversion/libsvn_fs_x/revprops.h

* subversion/libsvn_fs_x/string_table.c

* subversion/libsvn_fs_x/string_table.h

* subversion/libsvn_fs_x/transaction.c

* subversion/libsvn_fs_x/tree.c

* subversion/libsvn_fs_x/util.c

* subversion/libsvn_fs_x/verify.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz_pool.c

* subversion/libsvn_repos/config_pool.c

* subversion/libsvn_repos/dump.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_subr/bit_array.c

* subversion/libsvn_subr/cache-membuffer.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/dirent_uri.c

* subversion/libsvn_subr/fnv1a.c

* subversion/libsvn_subr/gpg_agent.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/object_pool.c

* subversion/libsvn_subr/packed_data.c

* subversion/libsvn_subr/prefix_string.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/sqlite.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/sysinfo.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/utf8proc/utf8proc_data.c

* subversion/libsvn_subr/x509info.c

* subversion/libsvn_wc/diff.h

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/wc.h

* subversion/libsvn_wc/wc_db.c

* subversion/libsvn_wc/wc_db.h

* subversion/mod_dav_svn/lock.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/status.c

* subversion/svn/auth-cmd.c

* subversion/svn/info-cmd.c

* subversion/svn/mergeinfo-cmd.c

* subversion/svn/notify.c

* subversion/svn/propget-cmd.c

* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnserve/logger.c

* subversion/svnserve/serve.c

* subversion/svnserve/server.h

* subversion/svnserve/svnserve.c

* subversion/tests/cmdline/blame_tests.py

* subversion/tests/cmdline/checkout_tests.py

* subversion/tests/cmdline/commit_tests.py

* subversion/tests/cmdline/export_tests.py

* subversion/tests/cmdline/externals_tests.py

* subversion/tests/cmdline/lock_tests.py

* subversion/tests/cmdline/merge_tests.py

* subversion/tests/cmdline/merge_tree_conflict_tests.py

* subversion/tests/cmdline/move_tests.py

* subversion/tests/cmdline/redirect_tests.py

* subversion/tests/cmdline/stat_tests.py

* subversion/tests/cmdline/svnadmin_tests.py

* subversion/tests/cmdline/switch_tests.py

* subversion/tests/cmdline/update_tests.py

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

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

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

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

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

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

* subversion/tests/libsvn_fs_x/fs-x-pack-test.c

* subversion/tests/libsvn_fs_x/string-table-test.c

* subversion/tests/libsvn_ra/ra-test.c

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

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

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

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

* subversion/tests/libsvn_subr/packed-data-test.c

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

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

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

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

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

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

* subversion/tests/svn_test_main.c

* tools/dev/benchmarks/RepoPerf/copy_repo.py

* tools/dev/benchmarks/RepoPerf/win_repo_bench.py

* tools/dev/build-svn-deps-win.pl

* tools/dev/fsfs-access-map.c

* tools/dev/po-merge.py

* tools/dev/x509-parser.c

* tools/diff/diff.c

* tools/dist/backport.pl

* tools/dist/backport_tests.py

* tools/hook-scripts/mailer/mailer.py

* tools/server-side/svnpubsub/daemonize.py

* win-tests.py

Remove unneeded whitespace via script.

  1. … 184 more files in changeset.
Following up on r1655279 and r1655288 apply some minor tweaks.

* subversion/bindings/javahl/native/DiffOptions.cpp

(DiffOptions::fileOptions): Support SHOW_C_FUNCTION flag, even

though the only user ignores it.

* subversion/include/svn_diff.h

(svn_diff_file_options_t): Add missing @since marker.

  1. … 1 more file in changeset.
Add svn_diff_file_output_merge3() with cancel support and update callers.

* subversion/include/svn_diff.h

(svn_diff_file_output_merge3): New function.

(svn_diff_file_output_merge2): Deprecate.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_output_merge2): Replace with ...

(svn_diff_file_output_merge3): that adds cancel support.

* subversion/libsvn_diff/deprecated.c

(svn_diff_file_output_merge2): New implementation that just uses

svn_diff_file_output_merge3().

* subversion/libsvn_wc/conflicts.h

(svn_wc__mark_resolved_text_conflict): Add cancel support.

* subversion/libsvn_wc/conflicts.c

(merge_showing_conflicts, eval_text_conflict_func_result,

resolve_text_conflict, svn_wc__mark_resolved_text_conflict):

Add cancel support.

(svn_wc__conflict_invoke_resolver): Pass cancel arguments to

resolve_text_conflict() and svn_wc__mark_resolved_text_conflict()

(resolve_text_conflict_on_node): Pass cancel arguments to

merge_showing_conflicts.

* subversion/libsvn_wc/merge.c

(do_text_merge): Add cancel support.

(merge_text_file): Update caller.

* subversion/libsvn_wc/adm_crawler.c

(restore_file): Update call to svn_wc__mark_resolved_text_conflict().

Did not add cancel support here.

* subversion/svn/conflict-callbacks.c

(show_conflicts, merge_prop_conflict, show_prop_conflict,

edit_prop_conflict): Add cancel support.

(handle_text_conflict): Update call to show_conflicts().

(handle_prop_conflict): Update call to show_prop_conflict().

* subversion/tests/libsvn_diff/diff-diff3-test.c

(three_way_merge): Switch to svn_diff_file_output_merge3().

* tools/diff/diff3.c

(do_diff3): Switch to svn_diff_file_output_merge3().

* tools/diff/diff4.c

(do_diff4): Switch to svn_diff_file_output_merge3().

  1. … 10 more files in changeset.
Following up on r1597983 and r1618839, expose configurable context size via

the now revved svn_diff_mem_string_output_unified3() function.

* subversion/include/private/svn_diff_private.h

(svn_diff__display_prop_diffs): Add context_size argument.

* subversion/include/svn_diff.h

(svn_diff_mem_string_output_unified3): Add context_size.

(svn_diff_mem_string_output_unified2): Tweak documentation.

* subversion/libsvn_client/diff.c

(display_prop_diffs): Update caller.

* subversion/libsvn_diff/deprecated.c

(svn_diff_mem_string_output_unified2): Update caller.

* subversion/libsvn_diff/diff_memory.c

(svn_diff_mem_string_output_unified3): Add argument.

* subversion/libsvn_diff/util.c

(svn_diff__display_prop_diffs): Add argument.

* subversion/svnlook/svnlook.c

(display_prop_diffs): Update caller.

  1. … 6 more files in changeset.
Add svn_diff_mem_string_output_unified3() with cancel support and adjust callers.

* subversion/include/svn_diff.h

(svn_diff_mem_string_output_unified3): New function that replaces...

(svn_diff_mem_string_output_unified, svn_diff_mem_string_output_unified2):

Deprecate.

* subversion/include/private/svn_diff_private.h

(svn_diff__display_prop_diffs): Add cancel support.

* subversion/libsvn_client/diff.c

(display_prop_diffs, diff_props_changed): Add cancel support.

* subversion/libsvn_diff/deprecated.c

(svn_diff_mem_string_output_unified, svn_diff_mem_string_output_unified2): Add

implementations that are based on svn_diff_mem_string_output_unified3().

* subversion/libsvn_diff/diff_memory.c

(svn_diff_mem_string_output_unified2): Replace with ...

(svn_diff_mem_string_output_unified3): New function with cancel support.

(svn_diff_mem_string_output_unified): Moved to deprecated.c.

* subversion/libsvn_diff/util.c

(svn_diff__display_prop_diffs): Add cancel support.

* subversion/svnlook/svnlook.c

(display_prop_diffs): Add cancel support.

  1. … 6 more files in changeset.
Support allowing no context lines to be printed with a diff.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_output_unified4): Only default if negative.

* subversion/include/svn_diff.h

(svn_diff_file_options_t): Update documented constraints on the context_size

member to match the new behavior.

(svn_diff_file_output_unified4): Update docs accordingly.

(svn_diff_file_output_unified3): Make doc slightly clearer.

  1. … 1 more file in changeset.
Add svn_diff_mem_string_output_merge3() with cancel support.

* subversion/include/svn_diff.h

(svn_diff_mem_string_output_merge3): New function.

(svn_diff_mem_string_output_merge2): Deprecate.

* subversion/libsvn_diff/diff_memory.c

(svn_diff_mem_string_output_merge2): Convert into ...

(svn_diff_mem_string_output_merge3): New function with cancel support.

* subversion/libsvn_diff/deprecated.c

(svn_diff_mem_string_output_merge2): New implementation that calls

svn_diff_mem_string_output_merge3().

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Add cancel support and use *_merge3().

(svn_wc__conflict_invoke_resolver): Update to pass cancel args to

generate_propconflict.

* subversion/libsvn_wc/props.c

(prop_conflict_from_skel, append_prop_conflict, svn_wc__create_prejfile):

Add cancel support.

* subversion/libsvn_wc/props.h

(svn_wc__create_prejfile): Add cancel support.

* subversion/libsvn_wc/workqueue.c

(run_prej_install): Pass cancel func/baton to svn_wc__create_prejfile.

  1. … 6 more files in changeset.
Add commandline support for configuring the context size of our

unified diff output. This allows

$ svn diff -x -U9 WC

Note: this patch doesn't update the help output for -x, which

will need a separate patch.

* subversion/include/svn_diff.h

(svn_diff_file_options_parse): Document -U and --context.

* subversion/libsvn_diff/diff_file.c

(diff_options): Add context.

(svn_diff_file_options_parse): Handle context option.

  1. … 1 more file in changeset.
Make the diff parser return mergeinfo data contained in a diff.

This requires a special parsing step for pretty-printed mergeinfo

diff data, which is partly affected by i18n.

This is a prerequisite for eventual svn:mergeinfo support in 'svn patch',

tracked as issue #3747. However, making 'svn patch' apply mergeinfo

changes will first require making 'svn patch' mirror the results of

'svn merge' much more closely. Among other things, 'svn patch' needs

smarter handling of tree changes. E.g. copies created by a merge should

be created as copies by 'svn patch'. Currently, 'svn patch' transforms

copies into additions. It's unclear to what extent 'svn patch' could

emulate 'svn merge' because the unidiff format and it's various extensions

are quite different to Subversion's internal merge editor.

A grumpier type of SVN developer might even insinuate that svn:mergeinfo

is far from useful in the context of 'svn patch'. However, making the

diff parser return mergeinfo data should not contradict this notion,

nor should it make future research into perfect patch strategies impossible.

* subversion/include/svn_diff.h

(svn_patch_t): Add mergeinfo and reverse_mergeinfo fields.

* subversion/libsvn_diff/parse-diff.c

(): Include svn_ctype.h and svn_mergeinfo.h.

(parse_mergeinfo): New helper function which parses one

pretty-printed line of mergeinfo from svn diff output.

(parse_next_hunk): Parse svn:mergeinfo properties with the

new parse_mergeinfo() helper.

(parse_hunks): When an svn:mergeinfo property has been parsed,

do not add a hunk for it. Mergeinfo is stored inside the svn_patch_t

data structure.

  1. … 1 more file in changeset.
Add some initial code to support creating git-like binary file diffs when

running svn diff --git.

Currently the output appears to be not 100% identical to that of git, but I'm

not sure if that is caused by different compression settings or by a bug in

the new code.

* subversion/include/svn_diff.h

(svn_diff_output_binary): New function.

* subversion/libsvn_client/diff.c

(diff_content_changed): Produce git binary diffs instead of an error when

requested.

* subversion/libsvn_diff/binary_diff.c

New file.

(create_compressed,

write_literal,

svn_diff_output_binary): New functions.

  1. … 2 more files in changeset.
Extend svn_diff_file_options_t and svn_diff_file_output_unified4() to allow

configuring the context size for file diffs.

* subversion/include/svn_diff.h

(svn_diff_file_options_t): Add variable.

(svn_diff_file_output_unified4): Add argument.

(svn_diff_file_output_unified3): Document legacy behavior.

* subversion/libsvn_client/diff.c

(diff_content_changed): Update caller.

* subversion/libsvn_diff/deprecated.c

(svn_diff_file_output_unified3): Update caller.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_options_create): Initialize with original default.

(svn_diff_file_output_unified4): Add argument. Update initialization.

* subversion/svn/conflict-callbacks.c

(show_diff): Update caller. Use options to document defaults.

* subversion/svnlook/svnlook.c

(print_diff_tree): Update caller.

  1. … 5 more files in changeset.
Add --conflict-style to standalone tools/diff/diff3.

* tools/diff/diff3.c

(do_diff3): Add conflict style parameter.

(main): Make argv const, add option parsing, add token map, clear error,

pass conflict style, extend usage text.

* subversion/include/svn_diff.h

(enum svn_diff_conflict_display_style_t): Add maintenance comment.

  1. … 1 more file in changeset.
While working on diff, resolve a long standing personal issue by making it

possible to cancel unified diff output.

* subversion/include/svn_diff.h

(svn_diff_output2): New function.

(svn_diff_output): Deprecate function.

(svn_diff_file_output_unified4): New function.

(svn_diff_file_output_unified3): Deprecate function.

* subversion/libsvn_client/diff.c

(diff_writer_info_t): Add cancel callback.

(diff_content_changed): Update caller.

(svn_client_diff6,

svn_client_diff_peg6): Set cancel in baton.

* subversion/libsvn_diff/deprecated.c

(svn_diff_file_output_unified3,

svn_diff_output): New function.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_output_unified3): Rename to...

(svn_diff_file_output_unified4): ... and add cancel support.

* subversion/libsvn_diff/util.c

(svn_diff_output): Rename to...

(svn_diff_output2): ... and add cancel support.

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

* CHANGES:

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

* contrib/client-side/svn-merge-vendor.py:

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

* contrib/server-side/svnmirror.sh:

* contrib/server-side/svnmirror-test.sh:

* notes/meetings/berlin-11-agenda:

* notes/unicode-composition-for-filenames:

* notes/wc-ng/conflict-storage:

* notes/wc-ng/conflict-storage-2.0:

* subversion/bindings/ctypes-python/test/wc.py:

* subversion/bindings/cxxhl/src/aprwrap/hash.hpp:

* subversion/bindings/cxxhl/tests/test_aprwrap.cpp:

* subversion/bindings/javahl/native/JNICriticalSection.h:

* subversion/bindings/javahl/native/JNIUtil.cpp:

* subversion/bindings/javahl/native/jniwrapper/jni_env.hpp:

* subversion/bindings/javahl/native/NativeStream.hpp:

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

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

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

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

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

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

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

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

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

* subversion/include/private/svn_sqlite.h:

* subversion/include/private/svn_subr_private.h:

* subversion/include/svn_client.h:

* subversion/include/svn_client_mtcc.h:

* subversion/include/svn_diff.h:

* subversion/libsvn_fs_fs/rep-cache.c:

* subversion/libsvn_fs_x/rep-cache.c:

* subversion/libsvn_ra_serf/options.c:

* subversion/libsvn_subr/io.c:

* subversion/libsvn_subr/string.c:

* subversion/libsvn_subr/utf8proc.c:

* subversion/libsvn_wc/adm_crawler.c:

* subversion/libsvn_wc/diff_local.c:

* subversion/libsvn_wc/wc_db_update_move.c:

* subversion/libsvn_wc/wc-metadata.sql:

* subversion/svn/status-cmd.c:

* subversion/tests/cmdline/diff_tests.py:

* subversion/tests/cmdline/merge_tests.py:

* subversion/tests/cmdline/README:

* subversion/tests/cmdline/svnadmin_tests.py:

* subversion/tests/cmdline/svnauthz_tests.py:

* subversion/tests/cmdline/svndumpfilter_tests.py:

* subversion/tests/cmdline/svnrdump_tests.py:

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

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

* tools/dev/build-svn-deps-win.pl: Fix some typos.

  1. … 51 more files in changeset.
Fix the documentation for svn_diff_hunk_readline_diff_text().

This function has never returned the hunk header lines, despite several

significant refactorings.

* subversion/include/svn_diff.h

(svn_diff_hunk_readline_diff_text): Correctly identify that the hunk header

is not returned and direct users to the functions that can provide the

data in the hunk header.

Correct the issuing of '\ No newline ...' messages in property diffs.

The property diff code was not correctly identifying whether a final newline

was present. It was only printing the 'No newline' message once for the

'new' value of the property, and ignoring whether the 'old' value ended with

a newline.

* subversion/include/private/svn_diff_private.h

(SVN_DIFF__NO_NEWLINE_AT_END_OF_FILE,

SVN_DIFF__NO_NEWLINE_AT_END_OF_PROPERTY): New string constants.

* subversion/include/svn_diff.h

(svn_diff_mem_string_output_unified2): Add a special behaviour when the

hunk delimiter is '##': change the 'No newline' message to say

'property' instead of 'file'.

* subversion/libsvn_diff/diff_memory.c

(unified_output_baton_t): Add a 'no_newline_string' member.

(output_unified_token_range): Use 'no_newline_string' instead of a fixed

string.

(svn_diff_mem_string_output_unified2): Initialize the 'no_newline_string'

depending on the hunk delimiter specified.

* subversion/libsvn_diff/util.c

(svn_diff__unified_append_no_newline_msg): Use the new defined constant.

(maybe_append_eol): Remove.

(svn_diff__display_prop_diffs): Remove the attempted special handling of

'No newline' messages; let svn_diff_mem_string_output_unified2() do it.

* subversion/tests/cmdline/diff_tests.py

(diff_properties_no_newline): New test.

(test_list): Add it.

  1. … 4 more files in changeset.
Move the declaration of the first private libsvn_diff API into its own

header. A follow-up to r1412225.

Suggested by: rhuijben

* subversion/include/private/svn_diff_private.h

New file, declaring svn_diff__display_prop_diffs().

* subversion/include/svn_diff.h

(svn_diff__display_prop_diffs): Move to svn_diff_private.h.

* subversion/libsvn_client/diff.c,

subversion/svnlook/main.c

Include svn_diff_private.h.

  1. … 3 more files in changeset.
Factor out the display of property diffs from 'svn' and 'svnlook'. No

functional change.

* subversion/include/svn_diff.h

(svn_diff_mem_string_output_unified2): Clarify how the header parameters

are used.

(svn_diff__display_prop_diffs): New function.

* subversion/libsvn_diff/util.c

(maybe_append_eol): Move here; was identical in the other two files.

(display_mergeinfo_diff): Move here from libsvn_client/diff.c.

(svn_diff__display_prop_diffs): New function, extracted from

display_prop_diffs() in each of the other two files.

* subversion/libsvn_client/diff.c

(display_mergeinfo_diff, maybe_append_eol): Move to libsvn_diff/util.c.

(display_prop_diffs): Factor out the body as svn_diff__display_prop_diffs().

* subversion/svnlook/main.c

(maybe_append_eol): Move to libsvn_diff/util.c.

(display_prop_diffs): Factor out the body as svn_diff__display_prop_diffs().

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

(svn_diff_output_fns_t): Document that the pointers may be null, as

existing callers rely on that.

Fix Doxygen mark-up in public header files, where a plain comment was used

instead of the special Doxygen comment marker.

* subversion/include/svn_client.h

(svn_client_args_to_target_array): Use Doxygen-style comment.

* subversion/include/svn_diff.h

(svn_patch_file_t, svn_diff_open_patch_file): Same.

* subversion/include/svn_io.h

(svn_io_file_readline): Same.

* subversion/include/svn_types.h

(SVN_DEPTH_INFINITY_OR_FILES, SVN_DEPTH_INFINITY_OR_IMMEDIATES,

SVN_DEPTH_INFINITY_OR_EMPTY, SVN_DEPTH_IS_RECURSIVE,

SVN_LINENUM_MAX_VALUE): Same.

* subversion/include/svn_wc.h

(svn_wc_external_item_create, svn_wc_status3_t, svn_wc_get_changelists):

Same.

* subversion/include/svn_xml.h

(svn_xml_make_header): Same.

  1. … 5 more files in changeset.
Docstring improvements for qsort() callers.

* subversion/include/svn_diff.h

(svn_patch_t.hunks):

* subversion/include/svn_sorts.h

(svn_sort_compare_paths, svn_sort_compare_ranges):

* subversion/include/svn_delta.h

(svn_delta_path_driver):

* subversion/libsvn_client/client.h

(svn_client__sort_commit_item_urls):

Improve docstrings.

  1. … 3 more files in changeset.