Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Stream svndiff deltas without creating temporary files during 'svn commit'

over HTTP.

Creating the temporary files has a certain overhead (time to write them

and disk space), but what is more important, it prevents the client and

server from simultaneously processing the data, i.e., checksumming and

compressing it. See the log message to r1803144 for additional details

on this.

Technically, in order to do this, we use the new apply_textdelta_stream()

delta editor callback for the wc commit. In order to do that, we need

to make some of the used streams (mostly, with associated temporary files

on disk) properly support svn_stream_reset().

* subversion/include/private/svn_io_private.h

(svn_stream__from_aprfile): Declare this new function.

* subversion/libsvn_subr/stream.c

(struct baton_apr): Add new 'truncate_on_seek' field.

(make_stream_from_apr_file): Accept a new 'truncate_on_seek' argument,

which we'd need to properly reset streams over temporary files.

(seek_handler_apr): Honor the new 'truncate_on_seek' field.

(svn_stream__from_aprfile): Implement by forwarding the arguments to

make_stream_from_apr_file().

(svn_stream_from_aprfile2, svn_stream_for_stdin2, svn_stream_for_stdout

svn_stream_for_stderr): Update calls to make_stream_from_apr_file(),

don't change the existing behavior.

(svn_stream__create_for_install): Set the temporary file to be truncated

on seeks.

* subversion/libsvn_wc/adm_crawler.c

(seek_handler_copy): New function.

(copying_stream): Implement reset support in this stream.

(open_txdelta_stream_baton_t): New.

(open_txdelta_stream): New, implements svn_txdelta_stream_open_func_t.

Note that this function must be restartable, as it can be called

more than once, for example, if the HTTP server decides to do a

renegotiation, and we would be forced to resend the whole request

body. If this is the case, we reset the streams and continue.

(svn_wc__internal_transmit_text_deltas): Use the new apply_textdelta_stream()

delta editor callback. Calculate the MD5 checksum with the help of

svn_stream_checksummed2() stream. Pass the disowned streams to the open

txdelta callback.

* subversion/libsvn_wc/deprecated.c

(): Include svn_io_private.h.

(svn_wc_transmit_text_deltas2): Set the temporary file to be truncated

on seeks.

  1. … 3 more files in changeset.
Make the core of the wc commit do less by moving the logic responsible

for creating temporary files with the detranslated working file contents

to one of its calling sites.

The mentioned core function is svn_wc__internal_transmit_text_deltas(),

and the ability to create such files is only required for the deprecated

svn_wc_transmit_text_deltas2() and svn_wc_transmit_text_deltas() API

functions. That's where we will move this logic.

The side effect of this change is that it also fixes a minor bug — such

temporary files could be left behind in case of some of the errors.

* subversion/libsvn_wc/wc.h

(svn_wc__internal_transmit_text_deltas): Accept a stream to the temporary

file, instead of an out argument where we'd (previously) put the path

to the temporary file.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_text_deltas): Don't create and delete the

temporary file, and only optionally wrap the passed-in stream with

the copying_stream() handler.

* subversion/libsvn_wc/deprecated.c

(svn_wc_transmit_text_deltas2): Create the temporary file in this

deprecated function. Pass the disowned tempstream to the core

implementation, svn_wc_transmit_text_deltas2(). Properly close

the stream and don't leave the temporary file on the disk in case

of all errors.

  1. … 2 more files in changeset.
Fix potential access to uninitialized memory during 'svn commit'. I don't

know exact reproduction script, but it's obvious bug and crash reported via

TortoiseSVN crash dump service multiple times.

Found by: TortoiseSVN crash dump

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_text_deltas): Do not attempt to access checksum

from checksummed stream if svn_stream_close() returns error.

Only attempt to resolve a conflict when we know there might be one during

the file restore phase of svn update.

Removes a db transaction per missing file in the working copy.

* subversion/libsvn_wc/adm_crawler.c

(restore_node): Add argument. Update call.

(report_revisions_and_depths,

svn_wc_crawl_revisions5): Update caller.

Add proper cancel handling in the restore phase of 'svn up'.

(Bumped into this while reading through recent changes.)

* subversion/libsvn_wc/adm_crawler.c

(restore_file): Add cancel_func support.

(svn_wc_restore): Document TODO. Update caller.

(restore_node): Pass cancel_func.

(report_revisions_and_depths,

svn_wc_crawl_revisions5): Update caller.

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 the availability of apr_hash_this_key() etc. in APR v1.5, use

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

substitutes only when APR is too old to provide them.

* subversion/include/svn_types.h,

subversion/libsvn_subr/iter.c

(svn__apr_hash_index_key,

svn__apr_hash_index_klen,

svn__apr_hash_index_val):

Rename to apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val.

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

Everywhere else: track the renames.

  1. … 102 more files in changeset.
Switch the pristine file install code in libsvn_wc to using the recently added

install streams.

On Windows these streams avoid opening and closing the same file a few times,

which avoids influence from outside processes such as indexers and

virusscanners on the intermediate operations. In many corporate environments

with strict on access virusscanners (as well as on network drives) this

will hugely improve checkout times.

* subversion/include/private/svn_io_private.h

(svn_stream__install_delete,

svn_stream__install_get_info): New functions.

* subversion/libsvn_subr/stream.c

(svn_stream__install_get_info,

svn_stream__install_delete): New function.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_text_deltas): Update caller.

* subversion/libsvn_wc/externals.c

(edit_baton): Store install data instead of path.

(apply_textdelta,

close_file): Update caller.

* subversion/libsvn_wc/update_editor.c

(handler_baton): Add install data.

(window_handler): Update caller. Remove now unused variable.

(lazy_open_target): Update caller.

(apply_textdelta): Pass final path for error information instead of the now

completely hidden intermediate path.

(svn_wc_add_repos_file4): Update caller. Extract local file handling.

Remove obsolete comment.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_install_data_t): New struct.

(svn_wc__db_pristine_prepare_install): Update output state.

(svn_wc__db_pristine_install): Use baton for input.

(svn_wc__db_pristine_install_abort): New function.

* subversion/libsvn_wc/wc_db_pristine.c

(includes): Add svn_io.h and private/svn_io_private.h

(pristine_install_txn): Use install stream to avoid opening the files

many times.

(svn_wc__db_install_data_t): New struct.

(svn_wc__db_pristine_prepare_install): Initialize svn_wc__db_install_data_t.

(svn_wc__db_pristine_install): Install file using install stream.

(svn_wc__db_pristine_install_abort): New function.

* subversion/tests/libsvn_wc/pristine-store-test.c

(pristine_write_read,

pristine_delete_while_open,

reject_mismatching_text): Update caller.

  1. … 7 more files in changeset.
Following up on r1577109, reorder checksum arguments of

svn_wc__db_pristine_prepare_install to match the order of

svn_wc__db_pristine_install.

No functional changes.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_text_deltas): Update caller.

* subversion/libsvn_wc/externals.c

(apply_textdelta): Update caller.

* subversion/libsvn_wc/update_editor.c

(lazy_open_target,

svn_wc_add_repos_file4): Update caller.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_pristine_prepare_install): Swap checksum arguments.

* subversion/libsvn_wc/wc_db_pristine.c

(svn_wc__db_pristine_prepare_install): Swap checksum arguments.

* subversion/tests/libsvn_wc/pristine-store-test.c

(pristine_write_read,

pristine_delete_while_open,

reject_mismatching_text): Update caller.

  1. … 5 more files in changeset.
Replace the usage of the old svn_wc__open_writable_base() function that we

already used before wc-ng's pristine store, with a new

svn_wc__db_pristine_prepare_install() function.

This patch moves a bit of code in preparation for more refactoring of this

logic.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_text_deltas): Update caller.

* subversion/libsvn_wc/adm_files.c

(svn_wc__open_writable_base): Remove function. Move implementation to

svn_wc__db_pristine_prepare_install().

* subversion/libsvn_wc/adm_files.h

(svn_wc__open_writable_base): Remove function.

* subversion/libsvn_wc/externals.c

(apply_textdelta): Update caller.

* subversion/libsvn_wc/update_editor.c

(lazy_target_baton): Remove unneeded baton.

(lazy_open_target): Directly use handler baton instead

of a baton with the same info.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_pristine_prepare_install): New function.

* subversion/libsvn_wc/wc_db_pristine.c

(svn_wc__db_pristine_prepare_install): New function. Implementation copied

from svn_wc__open_writable_base.

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

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

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

This patch excludes all conflicting cases.

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

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

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

* subversion/libsvn_auth_gnome_keyring/gnome_keyring.c

* subversion/libsvn_client/add.c

* subversion/libsvn_client/cat.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/cleanup.c

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/copy_foreign.c

* subversion/libsvn_client/ctx.c

* subversion/libsvn_client/delete.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/diff_summarize.c

* subversion/libsvn_client/export.c

* subversion/libsvn_client/externals.c

* subversion/libsvn_client/import.c

* subversion/libsvn_client/info.c

* subversion/libsvn_client/iprops.c

* subversion/libsvn_client/list.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_client/repos_diff.c

* subversion/libsvn_client/resolved.c

* subversion/libsvn_client/revert.c

* subversion/libsvn_client/switch.c

* subversion/libsvn_client/update.c

* subversion/libsvn_client/util.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_diff/parse-diff.c

* subversion/libsvn_diff/util.c

* subversion/libsvn_fs/access.c

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

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_base/dag.c

* subversion/libsvn_fs_base/fs.c

* subversion/libsvn_fs_base/lock.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/tree.c

* subversion/libsvn_fs_fs/caching.c

* subversion/libsvn_fs_fs/lock.c

* subversion/libsvn_fs_fs/temp_serializer.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/deprecated.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_serf/blame.c

* subversion/libsvn_ra_serf/blncache.c

* subversion/libsvn_ra_serf/commit.c

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/getlocationsegments.c

* subversion/libsvn_ra_serf/getlocks.c

* subversion/libsvn_ra_serf/inherited_props.c

* subversion/libsvn_ra_serf/log.c

* subversion/libsvn_ra_serf/merge.c

* subversion/libsvn_ra_serf/mergeinfo.c

* subversion/libsvn_ra_serf/options.c

* subversion/libsvn_ra_serf/property.c

* subversion/libsvn_ra_serf/replay.c

* subversion/libsvn_ra_serf/serf.c

* subversion/libsvn_ra_serf/update.c

* subversion/libsvn_ra_serf/util.c

* subversion/libsvn_ra_serf/xml.c

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_repos/authz.c

* subversion/libsvn_repos/commit.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_repos/deprecated.c

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/hooks.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/replay.c

* subversion/libsvn_repos/reporter.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/compat.c

* subversion/libsvn_subr/config.c

* subversion/libsvn_subr/config_auth.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/hash.c

* subversion/libsvn_subr/io.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/simple_providers.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/ssl_client_cert_providers.c

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

* subversion/libsvn_subr/ssl_server_trust_providers.c

* subversion/libsvn_subr/subst.c

* subversion/libsvn_subr/types.c

* subversion/libsvn_subr/username_providers.c

* subversion/libsvn_subr/utf.c

* subversion/libsvn_subr/win32_crypto.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/adm_files.c

* subversion/libsvn_wc/conflicts.c

* subversion/libsvn_wc/copy.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff_editor.c

* subversion/libsvn_wc/diff_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.c

* subversion/libsvn_wc/lock.c

* subversion/libsvn_wc/node.c

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

* subversion/libsvn_wc/props.c

* subversion/libsvn_wc/revert.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/upgrade.c

* subversion/libsvn_wc/wc_db_update_move.c

* subversion/libsvn_wc/wc_db_wcroot.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/version.c

* subversion/svn/cl-conflicts.c

* subversion/svn/commit-cmd.c

* subversion/svn/conflict-callbacks.c

* subversion/svn/diff-cmd.c

* subversion/svn/help-cmd.c

* subversion/svn/notify.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propget-cmd.c

* subversion/svn/props.c

* subversion/svn/status-cmd.c

* subversion/svn/status.c

* subversion/svn/svn.c

* subversion/svn/util.c

* subversion/svnadmin/svnadmin.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/dump_editor.c

* subversion/svnrdump/svnrdump.c

* subversion/svnrdump/util.c

* subversion/svnserve/serve.c

* subversion/svnsync/svnsync.c

* subversion/svnsync/sync.c

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

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

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

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

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

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

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

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

* subversion/tests/svn_test_fs.c

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

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

  1. … 162 more files in changeset.
Finish ending the use of the deprecated svn_stream_set_read().

* subversion/bindings/ctypes-python/csvn/types.py

(Stream.__init__): Use svn_stream_set_read2().

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

(InputStream::getStream): Use svn_stream_set_read2().

* subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp

(InputStream::get_global_stream, InputStream:get_stream):

Use svn_stream_set_read2().

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

(svn_swig_pl_make_stream): Use svn_stream_set_read2().

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

(svn_swig_py_make_stream): Use svn_stream_set_read2().

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

(svn_swig_rb_make_stream): Use svn_stream_set_read2().

* subversion/libsvn_fs_base/reps-strings.c

(svn_fs_base__rep_contents_read_stream): Use svn_stream_set_read2().

* subversion/libsvn_fs_fs/cached_data.c

(svn_fs_fs__get_contents): Use svn_stream_set_read2().

* subversion/libsvn_fs_fs/recovery.c

(recover_find_max_ids): Use svn_stream_set_read2().

* subversion/libsvn_fs_x/cached_data.c

(svn_fs_x__get_contents): Use svn_stream_set_read2().

* subversion/libsvn_subr/spillbuf.c

(svn_stream__from_spillbuf): Use svn_stream_set_read2().

* subversion/libsvn_subr/stream.c

(svn_stream_compressed): Use svn_stream_set_read2().

* subversion/libsvn_subr/subst.c

(stream_translated, svn_subst_stream_from_specialfile):

Use svn_stream_set_read2().

* subversion/libsvn_wc/adm_crawler.c

(copying_stream): Use svn_stream_set_read2().

* subversion/libsvn_wc/translate.c

(svn_wc__internal_translated_stream): Use svn_stream_set_read2().

  1. … 14 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.
Following up on r1561688, switch almost every caller of svn_stream_read() to

its successor svn_stream_read_full(). Do this to resolve many deprecation

warnings (and to avoid somebody else accidentally doing the invalid conversion

to svn_stream_read2()).

There are no functional changes as svn_stream_read() is a direct call to

svn_stream_read_full().

* subversion/libsvn_delta/svndiff.c

(read_one_byte): Update caller.

* subversion/libsvn_delta/text_delta.c

(txdelta_next_window,

tpush_write_handler,

apply_window,

svn_txdelta_send_stream): Update caller.

* subversion/libsvn_fs_base/lock.c

(svn_fs_base__get_locks): Update caller.

* subversion/libsvn_fs_fs/recovery.c

(read_handler_recover): Update caller.

* subversion/libsvn_fs_x/cached_data.c

(get_dir_contents): Update caller.

* subversion/libsvn_fs_x/pack.c

(write_reps_containers): Update caller.

* subversion/libsvn_repos/load.c

(read_key_or_val,

parse_text_block,

svn_repos_parse_dumpstream3): Update caller.

* subversion/libsvn_subr/config_file.c

(parser_getc): Update caller.

* subversion/libsvn_subr/hash.c

(svn_hash__read_entry):

* subversion/libsvn_subr/packed_data.c

(read_stream_uint,

read_stream_data,

svn_packed__data_read): Update caller.

* subversion/libsvn_subr/subst.c

(translated_stream_read,

read_handler_special): Update caller.

* subversion/libsvn_wc/adm_crawler.c

(read_handler_copy): Update caller.

* subversion/mod_dav_svn/repos.c

(deliver): Update caller.

* subversion/svnserve/serve.c

(get_file): Update caller.

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

(test_spillbuf_stream): Update caller.

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

(test_stream_from_string,

test_stream_compressed,

test_stream_seek_stringbuf,

test_stream_seek_translated,

test_stream_compressed_empty_file): Update caller.

* subversion/tests/libsvn_wc/pristine-store-test.c

(pristine_delete_while_open): Update caller.

* subversion/tests/svn_test_fs.c

(svn_test__stream_to_string): Update caller.

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

(read_windows): Update caller.

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

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

svn_hash.h.

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

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

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

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

subversion/libsvn_auth_gnome_keyring/gnome_keyring.c,

subversion/libsvn_client/add.c,

subversion/libsvn_client/cat.c,

subversion/libsvn_client/changelist.c,

subversion/libsvn_client/cleanup.c,

subversion/libsvn_client/commit.c,

subversion/libsvn_client/commit_util.c,

subversion/libsvn_client/copy.c,

subversion/libsvn_client/copy_foreign.c,

subversion/libsvn_client/ctx.c,

subversion/libsvn_client/delete.c,

subversion/libsvn_client/deprecated.c,

subversion/libsvn_client/diff.c,

subversion/libsvn_client/diff_local.c,

subversion/libsvn_client/diff_summarize.c,

subversion/libsvn_client/export.c,

subversion/libsvn_client/externals.c,

subversion/libsvn_client/import.c,

subversion/libsvn_client/info.c,

subversion/libsvn_client/iprops.c,

subversion/libsvn_client/list.c,

subversion/libsvn_client/locking_commands.c,

subversion/libsvn_client/log.c,

subversion/libsvn_client/merge.c,

subversion/libsvn_client/mergeinfo.c,

subversion/libsvn_client/patch.c,

subversion/libsvn_client/prop_commands.c,

subversion/libsvn_client/ra.c,

subversion/libsvn_client/repos_diff.c,

subversion/libsvn_client/resolved.c,

subversion/libsvn_client/revert.c,

subversion/libsvn_client/status.c,

subversion/libsvn_client/switch.c,

subversion/libsvn_client/update.c,

subversion/libsvn_client/util.c,

subversion/libsvn_delta/compat.c,

subversion/libsvn_delta/xdelta.c,

subversion/libsvn_diff/parse-diff.c,

subversion/libsvn_diff/util.c,

subversion/libsvn_fs/access.c,

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

subversion/libsvn_fs_base/bdb/env.c,

subversion/libsvn_fs_base/dag.c,

subversion/libsvn_fs_base/fs.c,

subversion/libsvn_fs_base/lock.c,

subversion/libsvn_fs_base/revs-txns.c,

subversion/libsvn_fs_base/tree.c,

subversion/libsvn_fs_fs/caching.c,

subversion/libsvn_fs_fs/fs_fs.c,

subversion/libsvn_fs/fs-loader.c,

subversion/libsvn_fs_fs/lock.c,

subversion/libsvn_fs_fs/temp_serializer.c,

subversion/libsvn_fs_fs/tree.c,

subversion/libsvn_fs_util/fs-util.c,

subversion/libsvn_ra/compat.c,

subversion/libsvn_ra/deprecated.c,

subversion/libsvn_ra_local/ra_plugin.c,

subversion/libsvn_ra/ra_loader.c,

subversion/libsvn_ra_serf/blame.c,

subversion/libsvn_ra_serf/blncache.c,

subversion/libsvn_ra_serf/commit.c,

subversion/libsvn_ra_serf/getlocations.c,

subversion/libsvn_ra_serf/getlocationsegments.c,

subversion/libsvn_ra_serf/getlocks.c,

subversion/libsvn_ra_serf/inherited_props.c,

subversion/libsvn_ra_serf/log.c,

subversion/libsvn_ra_serf/merge.c,

subversion/libsvn_ra_serf/mergeinfo.c,

subversion/libsvn_ra_serf/options.c,

subversion/libsvn_ra_serf/property.c,

subversion/libsvn_ra_serf/replay.c,

subversion/libsvn_ra_serf/serf.c,

subversion/libsvn_ra_serf/update.c,

subversion/libsvn_ra_serf/util.c,

subversion/libsvn_ra_serf/xml.c,

subversion/libsvn_ra_svn/client.c,

subversion/libsvn_ra_svn/editorp.c,

subversion/libsvn_ra_svn/marshal.c,

subversion/libsvn_repos/authz.c,

subversion/libsvn_repos/commit.c,

subversion/libsvn_repos/delta.c,

subversion/libsvn_repos/deprecated.c,

subversion/libsvn_repos/fs-wrap.c,

subversion/libsvn_repos/hooks.c,

subversion/libsvn_repos/log.c,

subversion/libsvn_repos/replay.c,

subversion/libsvn_repos/reporter.c,

subversion/libsvn_repos/repos.c,

subversion/libsvn_repos/rev_hunt.c,

subversion/libsvn_subr/auth.c,

subversion/libsvn_subr/cmdline.c,

subversion/libsvn_subr/compat.c,

subversion/libsvn_subr/config_auth.c,

subversion/libsvn_subr/config.c,

subversion/libsvn_subr/deprecated.c,

subversion/libsvn_subr/dso.c,

subversion/libsvn_subr/hash.c,

subversion/libsvn_subr/io.c,

subversion/libsvn_subr/mergeinfo.c,

subversion/libsvn_subr/opt.c,

subversion/libsvn_subr/properties.c,

subversion/libsvn_subr/simple_providers.c,

subversion/libsvn_subr/sorts.c,

subversion/libsvn_subr/ssl_client_cert_providers.c,

subversion/libsvn_subr/ssl_client_cert_pw_providers.c,

subversion/libsvn_subr/ssl_server_trust_providers.c,

subversion/libsvn_subr/subst.c,

subversion/libsvn_subr/types.c,

subversion/libsvn_subr/username_providers.c,

subversion/libsvn_subr/utf.c,

subversion/libsvn_subr/win32_crypto.c,

subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/adm_ops.c,

subversion/libsvn_wc/conflicts.c,

subversion/libsvn_wc/copy.c,

subversion/libsvn_wc/deprecated.c,

subversion/libsvn_wc/diff_editor.c,

subversion/libsvn_wc/diff_local.c,

subversion/libsvn_wc/entries.c,

subversion/libsvn_wc/externals.c,

subversion/libsvn_wc/info.c,

subversion/libsvn_wc/lock.c,

subversion/libsvn_wc/node.c,

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

subversion/libsvn_wc/props.c,

subversion/libsvn_wc/revert.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/translate.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/upgrade.c,

subversion/libsvn_wc/wc_db.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/wc_db_wcroot.c,

subversion/libsvn_wc/workqueue.c,

subversion/mod_dav_svn/activity.c,

subversion/mod_dav_svn/deadprops.c,

subversion/mod_dav_svn/lock.c,

subversion/mod_dav_svn/merge.c,

subversion/mod_dav_svn/mod_dav_svn.c,

subversion/mod_dav_svn/reports/update.c,

subversion/mod_dav_svn/repos.c,

subversion/mod_dav_svn/version.c,

subversion/svnadmin/svnadmin.c,

subversion/svnauth/svnauth.c,

subversion/svn/cl-conflicts.c,

subversion/svn/commit-cmd.c,

subversion/svn/conflict-callbacks.c,

subversion/svn/diff-cmd.c,

subversion/svn/help-cmd.c,

subversion/svnlook/svnlook.c,

subversion/svnmucc/svnmucc.c,

subversion/svn/notify.c,

subversion/svn/propedit-cmd.c,

subversion/svn/propget-cmd.c,

subversion/svn/props.c,

subversion/svnrdump/dump_editor.c,

subversion/svnrdump/svnrdump.c,

subversion/svnrdump/util.c,

subversion/svnserve/serve.c,

subversion/svn/status.c,

subversion/svn/status-cmd.c,

subversion/svn/svn.c,

subversion/svnsync/svnsync.c,

subversion/svnsync/sync.c,

subversion/svn/util.c,

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

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

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

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

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

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

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

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

subversion/tests/svn_test_fs.c,

tools/dev/fsfs-reorg.c,

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

  1. … 180 more files in changeset.
* **/**

Run tools/dev/remove-trailing-whitespace.sh to remove all trailing whitespace

before we branch 1.8, like we did before creating previous branches.

No functional changes.

  1. … 199 more files in changeset.
Use svn_hash_gets and svn_hash_puts.

* subversion/libsvn_wc/adm_crawler.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_local.c

* subversion/libsvn_wc/entries.c

* subversion/libsvn_wc/externals.c

* subversion/libsvn_wc/info.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

  1. … 19 more files in changeset.
Use svn_hash_gets/svn_hash_sets, part 1: #include "svn_hash.h" everywhere

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

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

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/diff_local.c

* subversion/libsvn_client/import.c

* subversion/libsvn_delta/xdelta.c

* subversion/libsvn_fs/access.c

* subversion/libsvn_fs/fs-loader.c

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

* subversion/libsvn_fs_base/bdb/env.c

* subversion/libsvn_fs_fs/tree.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_repos/delta.c

* subversion/libsvn_subr/dso.c

* subversion/libsvn_subr/properties.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_wc/adm_crawler.c

* subversion/libsvn_wc/conflicts.c

* subversion/mod_dav_svn/deadprops.c

* subversion/mod_dav_svn/merge.c

* subversion/mod_dav_svn/mod_dav_svn.c

* subversion/mod_dav_svn/repos.c

* subversion/svn/props.c

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

(svn_hash.h): Add #include.

  1. … 22 more files in changeset.
Merge svn_kind_t into svn_node_kind_t, leaving only one public enumeration

that describes node kinds.

* subversion/include/svn_types.h (svn_kind_t): Removed.

All uses of svn_kind_t were replaced with svn_node_kind_t.

(svn_node_kind_t): New enumeration constant, svn_node_symlink.

Replaces all previous uses of svn_kind_symlink.

(svn__node_kind_from_kind): Removed. All call sites updated.

(svn__kind_from_node_kind): Removed. All call sites updated.

* subversion/libsvn_wc/tree_conflicts.c (node_kind_map):

Added comment about incompatible representation of svn_node_unknown.

* subversion/libsvn_wc/node.c (convert_db_kind_to_node_kind):

May be redundant, and comment is out of date. Added a note about that.

There are also a zillion changes in dependent files, and they all result

from the following renames:

svn_kind_t to svn_node_kind_t

svn_kind_none to svn_node_none

svn_kind_file to svn_node_file

svn_kind_dir to svn_node_dir

svn_kind_unknown to svn_node_unknown

svn_kind_symlink to svn_node_symlink

  1. … 65 more files in changeset.
* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths,

svn_wc_crawl_revisions5): Avoid a db query when missing files during update.

Deprecate svn_wc_read_kind() to add an additional argument, which makes this

function directly usable to answer the questions 'is there an in-wc node here?'

and 'can I add a new node here?' for libsvn_client.

Currently almost every caller of this function in libsvn_client needs to call

another node function before it can do its actual work, because it misses

essential information.

* subversion/include/svn_wc.h

(svn_wc_read_kind2): New function.

(svn_wc_read_kind): Deprecate function.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_prop_deltas): Update caller. Provide proper error

when used on invalid nodes.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Update caller. Provide proper error

when used on invalid nodes.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add3): Update caller.

(svn_wc_read_kind): New function.

* subversion/libsvn_wc/diff_local.c

(svn_wc_diff6): Update caller.

* subversion/libsvn_wc/lock.c

(svn_wc_adm_retrieve,

svn_wc_adm_probe_retrieve): Update caller.

* subversion/libsvn_wc/node.c

(svn_wc_read_kind): Rename to ...

(svn_wc_read_kind2): ... this. Add argument and change return type.

* subversion/libsvn_wc/revert.c

(revert_partial): Update caller.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_read_kind): Handle show_deleted.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_kind): Add show_deleted argument and update

documentation.

  1. … 10 more files in changeset.
* subversion/libsvn_wc/conflicts.h,

subversion/libsvn_wc/conflicts.c

(svn_wc__resolve_text_conflict): Rename to 'mark_resolved_text_conflict'

for clarity, since we have a bunch of other functions that actually

resolve conflicts and this is not one of them.

* subversion/libsvn_wc/adm_crawler.c

(restore_file): Update caller, and rename the 'resolve_text_conflict'

parameter to 'mark_resolved_text_conflict' similarly.

(svn_wc_restore, restore_node): Annotate the calls to restore_file().

  1. … 2 more files in changeset.
Resolve a small restore issue found while writing a test for issue #4288.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc_restore): Avoid unneeded db call.

(report_revisions_and_depths): Don't try to restore nodes below a

non-directory. This wil fail if one of the ancestors is a file.

* subversion/tests/cmdline/update_tests.py

(update_replace_obstruction): New partial test for issue #4288, showing the

restore issue.

(test_list): Add test

  1. … 1 more file in changeset.
Add a 'properties' output parameter to most of the WC DB functions that read

node info from a layer:

svn_wc__db_base_get_info_internal()

svn_wc__db_base_get_info()

svn_wc__db_depth_get_info()

svn_wc__db_read_pristine_info()

svn_wc__db_read_info() -- NOT YET

The aim is to regularize the APIs by getting the props along with other info

about a node. This should allow the documentation and the implementation to

become more consistent than the separate APIs we currently have for reading

the props alone -- for example, there is currently no API to read the props

for a node at a given depth.

The new 'props' output does not replace the 'had_props' boolean output which

remains available for callers that just need to test for the presence of

properties, since that is quicker.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_get_info,

svn_wc__db_read_pristine_info): Add a 'props' output parameter.

* subversion/libsvn_wc/wc_db_private.h

(svn_wc__db_base_get_info_internal,

svn_wc__db_depth_get_info): Add a 'props' output parameter.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_base_get_info_internal,

svn_wc__db_base_get_info,

svn_wc__db_depth_get_info): Add a 'props' output parameter.

(...everywhere...): Track the change: pass NULL.

* subversion/libsvn_wc/adm_crawler.c,

subversion/libsvn_wc/adm_files.c,

subversion/libsvn_wc/ambient_depth_filter_editor.c,

subversion/libsvn_wc/conflicts.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/node.c,

subversion/libsvn_wc/status.c,

subversion/libsvn_wc/update_editor.c,

subversion/libsvn_wc/util.c,

subversion/libsvn_wc/wc_db_update_move.c,

subversion/libsvn_wc/workqueue.c

(...everywhere...): Track the change: pass NULL.

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

(test_getting_info): Test the new parameter (just a tiny bit).

(...everywhere...): Track the change: pass NULL.

  1. … 18 more files in changeset.
Make svn_wc__db_read_kind() handle processing 'hidden', just like

svn_wc_read_kind(). This allows making the lock processing to disallow

locking hidden directories, which in turn fixes the

update_with_parents_and_exclude() test.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc__internal_transmit_prop_deltas): Update caller.

* subversion/libsvn_wc/adm_ops.c

(svn_wc__process_committed_internal): Update caller.

* subversion/libsvn_wc/deprecated.c

(svn_wc_add3): Update caller.

* subversion/libsvn_wc/diff_local.c

(svn_wc_diff6): Update caller.

* subversion/libsvn_wc/lock.c

(svn_wc_adm_retrieve,

svn_wc_adm_probe_retrieve): Update caller.

(svn_wc__acquire_write_lock): Update caller. This fixes the update test.

* subversion/libsvn_wc/util.c

(svn_wc__fetch_kind_func): Update caller.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_read_kind): Add argument and retrieve and process status if hidden

nodes shouldn't show up as files or directories.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_read_kind): Update prototype and argument documentation.

  1. … 7 more files in changeset.
Since ages ago, svn_wc__db_base_get_info() never returns null repository

info when status is normal, so there's no need for the caller to check and

scan for the repository info. Correct the docs and remove the unnecessary

code.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_base_get_info): Reverse the statement that 'repos_*' may be

null when status is normal.

* subversion/libsvn_wc/adm_crawler.c

(svn_wc_crawl_revisions5): Remove a scan_base_repos call.

* subversion/libsvn_wc/entries.c

(get_info_for_deleted): Remove a scan_base_repos call.

  1. … 2 more files in changeset.
In the adm crawler report the leaf-directories as depth empty when doing a

depth immediate crawl. This ensures that we don't accidentally get unneeded

editor operations on children. This resolves issue #4136.

Found by: Derek Wallace <del.wallace{_AT_}gmail.com>

Suggested by: cmpilato

* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths): Report the to be used depth instead of just the

stored depth.

* subversion/tests/cmdline/depth_tests.py

(commit_then_immediates_update): Remove XFail marker.

  1. … 1 more file in changeset.
Eliminate svn_relpath__is_child(); use svn_relpath_skip_ancestor() instead.

* subversion/include/svn_dirent_uri.h

(svn_relpath__is_child): Remove.

* subversion/libsvn_subr/dirent_uri.c

(svn_relpath__is_child): Remove.

(svn_fspath__is_child): Use is_child() directly instead of

svn_relpath__is_child().

* subversion/include/svn_path.h

(svn_path_is_child): Update the recommendations in the deprecation clause.

* subversion/libsvn_fs_fs/tree.c

(prev_location, history_prev): Use _skip_ancestor instead of __is_child.

In these cases, this is a simplification because special handling of the

"" result (when parent == child) is eliminated.

* subversion/libsvn_ra_neon/commit.c

(get_child_tokens): Same. If the result is "", don't use it. Eliminate the

subpool as it is now unused.

* subversion/libsvn_ra_serf/commit.c

(checkout_file): Same. A result of "" is never expected.

* subversion/libsvn_repos/replay.c

(path_driver_cb_func): Same. Assert the result is never "".

* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths): Same. A return value of "" will always fail

the following test just as NULL would.

* subversion/libsvn_wc/wc_db.c

(svn_wc__db_get_not_present_descendants): Same. A result of "" is never

expected. Duplicate the result to achieve the required lifetime.

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

(test_relpath_is_child): Remove. Anyway, this was accidentally testing

svn_dirent_is_child(); nothing was testing svn_relpath__is_child().

  1. … 9 more files in changeset.
Resolve a regression which sometimes didn't reporting depth empty directories

to a server, which made update receive changes on nodes that don't exist

locally.

The working copy doesn't break, but it is certainly inconvenient that update

sometimes fails when it shouldn't.

* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths): Report changed depths when walking recursive,

instead of just with an explicit depth infinity walk.

* subversion/tests/cmdline/depth_tests.py

(update_below_depth_empty): Remove XFail marker.

  1. … 1 more file in changeset.
Followup to r1181800 by removing the svn_wc__db_kind_t type and replacing it

with the now-public svn_kind_t. This just affects the internals of libsvn_wc,

not any of the public, or quasi-public APIs.

* subversion/tests/libsvn_wc/:

s/svn_wc__db_kind_/svn_kind_/

  1. … 31 more files in changeset.