Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 875806 is being indexed.

Stop recanonicalizing the base url on every call of svn_path_url_add_component

by introducing svn_path_url_add_component2 that assumes the caller already did


(Our working copy library guarantees all url entries are canonicalized for

new (tested) and old (recanonicalize on load) working copy formats, but

we are recanonicalizing every single path continuously during svn update even

without changes).

This change reduces the user time of svn update time by about 3 or 4% here.

(about 1% wallclock time in my experiment. ra_neon, remote repository)

Update all callers except for the RA layers that currently

might assume the canonicalization.

* subversion/include/svn_path.h

(svn_path_url_add_component2): New function

(svn_path_url_add_component): Deprecate function.

* subversion/libsvn_subr/path.c

(svn_path_url_add_component2): New function.

(svn_path_url_add_component): Move to ...

* subversion/libsvn_subr/deprecated.c

(svn_path_url_add_component): ... here.

* subversion/svn/util.c


* subversion/libsvn_wc/crop.c


* subversion/libsvn_wc/util.c


* subversion/libsvn_wc/adm_ops.c

(tweak_entries, svn_wc_add3):

* subversion/libsvn_wc/status.c

(tweak_statushash, find_dir_url, make_file_baton, close_file):

* subversion/libsvn_wc/update_editor.c

(make_dir_baton, make_file_baton, delete_entry, add_directory,

svn_wc_get_switch_editor3, check_wc_root, svn_wc_add_repos_file3):

* subversion/libsvn_wc/entries.c

(take_from_entry, write_entry, write_entry_xml):

* subversion/libsvn_wc/adm_crawler.c

(report_revisions_and_depths, svn_wc_crawl_revisions4):

* subversion/libsvn_client/externals.c


* subversion/libsvn_client/merge.c

(tree_conflict, filter_self_referential_mergeinfo, merge_file_added

merge_dir_added, populate_remaining_ranges, get_mergeinfo_walk_cb,

combine_range_with_segments, normalize_merge_sources, svn_client_merge3,

ensure_all_missing_ranges_are_phantoms, calculate_left_hand_side):

* subversion/svn/util.c

(svn_cl__node_description): Update callers.

  1. … 13 more files in changeset.
* subversion/libsvn_subr/ssl_client_cert_pw_providers.c

(svn_auth_get_ssl_client_cert_pw_file_provider): Move this and ...

* subversion/libsvn_subr/simple_providers.c

(svn_auth_get_simple_provider): ... this function ...

* subversion/libsvn_subr/deprecated.c


svn_auth_get_simple_provider): To this file.

  1. … 2 more files in changeset.
* subversion/libsvn_subr/prompt.c

(svn_cmdline_prompt_user): Move deprecated function to ...

* subversion/libsvn_subr/deprecated.c

(svn_cmdline_prompt_user): ... this file.

  1. … 1 more file in changeset.
* subversion/libsvn_subr/deprecated.c

(global): Following up on r35621, add missing header.

* subversion/libsvn_subr/dso.c

(svn_dso_initialize): Move deprecated function to ...

* subversion/libsvn_subr/deprecated.c

(svn_dso_initialize): ... this file.

  1. … 1 more file in changeset.
* subversion/libsvn_subr/cmdline.c

(svn_cmdline_setup_auth_baton): Move deprecated function to ...

* subversion/libsvn_subr/deprecated.c

(svn_cmdline_setup_auth_baton): ... deprecated.c

  1. … 1 more file in changeset.
Various cleanups after all the subst work.

* subversion/include/svn_subst.h:

(SVN_SUBST_NATIVE_EOL_STR): new definition for the EOL format used in

the repository ("Normal Form")

* subversion/libsvn_subr/subst.c:

(SVN_SUBST__DEFAULT_EOL_STR): removed in favor of above

(svn_subst_translation_required): use SVN_SUBST_NATIVE_EOL_STR

(svn_subst_copy_and_translate3): fold old svn_subst_create_translated

into this function.

* subversion/libsvn_subr/deprecated.c:


svn_subst_translate_to_normal_form): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_stream, svn_wc_translated_file2): use


* subversion/libsvn_wc/merge.c:

(detranslate_wc_file): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use SVN_SUBST_NATIVE_EOL_STR

* subversion/libsvn_client/export.c:

(close_file): simplify via ternary operator removal

* subversion/libsvn_client/commit.c:

(send_file_contents): use SVN_SUBST_NATIVE_EOL_STR

Suggestion (of SVN_SUBST_NATIVE_EOL_STR) by: rhuijben

  1. … 8 more files in changeset.
Deprecate svn_subst_stream_translated_to_normal_form() and remove the

newly-added (in 1.6) svn_subst_create_translated() function.

* subversion/include/svn_subst.h:

(svn_subst_stream_translated_to_normal_form): deprecate

(svn_subst_create_translated): removed

* subversion/libsvn_subr/subst.c:

(svn_subst_stream_translated_to_normal_form): move to deprecated.c

(svn_subst_copy_and_translate3): remove the SPECIAL parameter in our

call to svn_subst_create_translated.

(svn_subst_create_translated): mark as "static" since this is used by

another function within subst.c. remove the SPECIAL parameter since it

is a constant.

* subversion/libsvn_subr/deprecated.c:

(svn_subst_stream_translated_to_normal_form): moved from subst.c

* subversion/libsvn_client/export.c:

(copy_one_versioned_file): adjust logic to early-exit for special files,

and to use svn_subst_create_specialfile() for them. rewrite code to

use svn_subst_stream_translated instead of create_translated. do the

extra fiddly on the temp file before renaming it into place.

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use svn_subst_stream_translated

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_stream): use svn_subst_stream_translated

* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use svn_subst_stream_translated

  1. … 6 more files in changeset.
Adjust a bunch of our public header files:

- make sure everything the header needs is included

- make sure nothing is included which is NOT needed

Added an exception to svn_types.h: it now explicitly includes svn_error.h

since Everybody needs that thing. We go ahead and make it easy for them,

even though that is counter-philosophy.

After altering the header files, some .c files in our codebase would not

compile -- they used stuff that they did not explicitly include. Thus, a

goodly number of .c files were updated, too.

* subversion/libsvn_ra/wrapper_template.h:

* subversion/libsvn_ra/deprecated.c:

* subversion/libsvn_ra/compat.c:

* subversion/libsvn_subr/iter.c:

* subversion/libsvn_subr/cmdline.c:

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c:

* subversion/libsvn_subr/error.c:

* subversion/libsvn_subr/auth.c:

* subversion/libsvn_subr/opt.c:

* subversion/libsvn_subr/checksum.c:

* subversion/libsvn_subr/compat.c:

* subversion/libsvn_subr/sha1.c:

* subversion/libsvn_subr/deprecated.c:

* subversion/libsvn_subr/ssl_server_trust_providers.c:

* subversion/mod_dav_svn/activity.c:

* subversion/mod_dav_svn/reports/log.c:

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

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

* subversion/svn/list-cmd.c:

* subversion/svn/changelist-cmd.c:

* subversion/svn/log-cmd.c:

* subversion/svn/conflict-callbacks.c:

* subversion/libsvn_fs_base/dag.c:

* subversion/libsvn_fs_base/util/fs_skels.c:

* subversion/include/svn_dirent_uri.h:

* subversion/include/svn_error_codes.h:

* subversion/include/svn_fs.h:

* subversion/include/svn_diff.h:

* subversion/include/svn_sorts.h:

* subversion/include/svn_mergeinfo.h:

* subversion/include/svn_base64.h:

* subversion/include/svn_dso.h:

* subversion/include/svn_ra_svn.h:

* subversion/include/svn_repos.h:

* subversion/include/svn_delta.h:

* subversion/include/svn_path.h:

* subversion/include/svn_subst.h:

* subversion/include/svn_xml.h:

* subversion/include/svn_props.h:

* subversion/include/svn_iter.h:

* subversion/include/svn_types.h:

* subversion/include/svn_config.h:

* subversion/include/svn_string.h:

* subversion/include/svn_io.h:

* subversion/include/svn_wc.h:

* subversion/include/svn_cmdline.h:

* subversion/include/svn_client.h:

* subversion/include/svn_user.h:

* subversion/include/svn_hash.h:

* subversion/include/svn_md5.h:

* subversion/include/svn_error.h:

* subversion/include/svn_pools.h:

* subversion/include/private/svn_log.h:

* subversion/include/svn_time.h:

* subversion/include/svn_utf.h:

* subversion/include/svn_auth.h:

* subversion/include/svn_ra.h:

* subversion/include/svn_opt.h:

* subversion/include/svn_checksum.h:

* subversion/libsvn_wc/deprecated.c:

* subversion/libsvn_wc/util.c:

* subversion/libsvn_wc/merge.c:

* subversion/libsvn_wc/tree_conflicts.c:

* subversion/libsvn_client/list.c:

* subversion/libsvn_client/log.c:

* subversion/libsvn_ra_neon/util.c:

* subversion/libsvn_ra_neon/log.c:

* subversion/libsvn_repos/deprecated.c:

* subversion/libsvn_fs_fs/tree.c:

* subversion/libsvn_fs_fs/fs_fs.c:

(): adjust #include statements appropriately

  1. … 69 more files in changeset.
Deprecate svn_subst_translate_to_normal_form().

* subversion/include/svn_subst.h:

(svn_subst_translate_to_normal_form): mark as deprecated

* subversion/libsvn_subr/subst.c:

(svn_subst_translate_to_normal_form): move to deprecated.c

* subversion/libsvn_subr/deprecated.c:

(svn_subst_translate_to_normal_form): moved from subst.c

* subversion/libsvn_wc/merge.c:

(detranslate_wc_file): switch to svn_subst_copy_and_translate3()

* subversion/libsvn_client/commit.c:

(send_file_contents): switch to svn_subst_stream_translated() by

reordering some logic, and using svn_subst_read_specialfile()


  1. … 4 more files in changeset.
Following up on r35329, make the new svn_log_changed_path2_t type future

extensible by providing create and dup functions.

* subversion/include/svn_types.h

(svn_log_changed_path2_t): Note that you should use

svn_log_changed_path2_create() to create instances and

svn_log_changed_path2_dup() to duplicate.

(svn_log_changed_path2_create): New function.

(svn_log_changed_path2_dup): New function.

(svn_log_changed_path_dup): Deprecate function

* subversion/libsvn_ra_neon/log.c

(log_start_element): Use svn_log_changed_path2_create()

* subversion/libsvn_ra_serf/log.c

(push_state): Use svn_log_changed_path2_create()

* subversion/libsvn_ra_svn/client.c

(ra_svn_log): Use svn_log_changed_path2_create()

* subversion/libsvn_repos/log.c

(detect_changed): Use svn_log_changed_path2_create()

* subversion/libsvn_subr/constructors.c

(svn_log_changed_path2_create): New function.

(svn_log_changed_path2_dup): New function.

(svn_log_changed_path_dup): Move to ...

* subversion/libsvn_subr/deprecated.c

(svn_log_changed_path_dup): ... here.

  1. … 6 more files in changeset.
Continued evolution of the translation APIs.

- svn_subst_translate_stream4 has been rolled back, leaving the

still-deprecated svn_subst_translate_stream3.

- svn_subst_stream_from_specialfile has been deprecated in favor of the

clearer svn_subst_*_specialfile APIs. the dual-purpose stream was very

hard to use and made reading code using it hard to understand

* subversion/libsvn_subr/subst.c:

(open_specialfile): this poor function has been renamed once again to ...

(svn_subst_read_specialfile): ... this. we also create a readonly stream

around an svn_string_t rather than a stringbuf-based stream.

(svn_subst_translate_stream4): removed. a couple of the key lines move

to deprecated.c and svn_subst_translate_stream3.

(svn_subst_translate_cstring2): big optimization. don't create two

streams and use stream4 to copy between them. instead, create the

stringbuf string to hold the output, wrap a translator stream around

it, and directly write the bytes into it. easy peasy.

(detranslate_special_file): follow rename to svn_subst_read_specialfile

(svn_subst_copy_and_translate3): follow rename to svn_subst_read_specialfile

(svn_subst_create_translated): toss use of stream4 in favor of wrapping

the destination stream (if needed) and always copying

(svn_subst_create_specialfile): new function, with basically a copy of

the deprecated svn_subst_stream_from_specialfile function.

(svn_subst_stream_from_specialfile): follow rename

* subversion/libsvn_subr/deprecated.c:

(svn_subst_translate_stream3): implement stream copying rather than

attempting to call the now-missing stream4 variant.

(svn_subst_stream_detranslated): use new svn_subst_read_specialfile

* subversion/libsvn_client/export.c:

(copy_one_versionedfile): use new svn_subst_read_specialfile

* subversion/libsvn_client/cat.c:

(cat_local_file): optionally wrap destination stream instead of using

the stream4 API.

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use new svn_subst_read_specialfile

* subversion/libsvn_wc/translate.c:

(svn_wc_translated_stream): large control flow tweak in order to remove


* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use new svn_subst_read_specialfile

* subversion/include/svn_subst.h:

(svn_subst_translate_stream4): removed

(svn_subst_translate_stream3): restore the docstring

(svn_subst_read_specialfile, svn_subst_create_specialfile): add new

targeted functions to take over from svn_subst_open_specialfile

  1. … 7 more files in changeset.
Trim down the set of supported APIs in svn_subst.h. Simplify the

translate_stream4 implementation by using the more generalized

streamy code of svn_subst_stream_translated()

* subversion/include/svn_subst.h:

(svn_subst_stream_detranslated): removed in favor of having clients use

one of two other APIs.

(svn_subst_get_detranslated_stream): removed. it was added for 1.6 but

had problems. killed with extreme prejudice.

* subversion/include/svn_io.h:

(svn_stream_copy3): fix typo. add TODO

* subversion/libsvn_client/export.c:

(copy_one_versioned_file): use svn_subst_stream_from_specialfile instead

of the (bad) svn_subst_get_detranslated_stream.

* subversion/libsvn_wc/questions.c:

(compare_and_verify): use svn_subst_stream_from_specialfile or

svn_subst_stream_translated_to_normal_form as appropriate, instead of

the deprecated svn_subst_stream_detranslated. tweak some of the logic

flow for selecting streams to compare.

* subversion/libsvn_wc/copy.c:

(copy_file_administratively): use svn_subst_stream_from_specialfile

instead of svn_subst_get_detranslated_stream. replace use of


* subversion/libsvn_subr/deprecated.c:

(svn_subst_stream_detranslated): moved here from subst.c

* subversion/libsvn_subr/subst.c:

(svn_subst_get_detranslated_stream): renamed to ...

(open_specialfile): ... this, and made static.

(svn_subst_stream_detranslated): moved to deprecated.c

(svn_subst_translate_stream4): full revamp in terms of

svn_subst_stream_translated, instead of "manual" translation.

(detranslate_special_file, svn_subst_copy_and_translate,

svn_subst_stream_from_specialfile): follow rename of

svn_subst_get_detranslated_stream to open_specialfile.

  1. … 6 more files in changeset.
Begin some cleaning up of the translation APIs. Long term goal is to focus

on stream translation and to deprecate all file-based APIs. Callers can

easily map files to/from streams.

- svn_subst_translate_stream4 has been added to ensure that the streams

passed to it will always be closed (simplifies and fixes some error

cleanup logic)

- internal function create_special_file_from_stringbuf has been changed to

take a stream instead

Note: there appears to be a lot of churn in svn_subst.h, but I simply

moved the svn_subst_translate_stream* functions together

* subversion/include/svn_subst.h:

(svn_subst_translate_stream4): new function to obsolete ...

(svn_subst_translate_stream3): ... this one

* subversion/libsvn_subr/subst.c:

(svn_subst_translate_stream3): moved to deprecated.c

(svn_subst_translate_stream4): rebuilt on the ashes of stream3,

including some argument renames. be very careful of all error returns,

in order to make sure that the streams are closed before returning.

(svn_subst_translate_cstring2): simplify in terms of stream4.

(create_special_file_from_stringbuf): renamed into ...

(create_special_file_from_stream): ... this. take a source stream and

read its first line, and create a special file (e.g. symlink) based on

that information.

(create_special_file): rewrite in terms of create_special_file_from_stream

(svn_subst_copy_and_translate3): rebuild and simplify using stream4.

(svn_subst_create_translated): simplify special file creation using

_from_stream. simplify and correct code and error return logic using

the new stream4 variant.

(close_handler_special): use new _from_stream function

* subversion/libsvn_subr/deprecated.c:

(svn_subst_translate_stream3): moved here from subst.c and implemented

in terms of the new stream4 function.

* subversion/libsvn_client/cat.c:

(cat_local_file): switch to svn_subst_translate_stream4() and ensure

that input is disowned for both branches. clarified err return logic.

  1. … 3 more files in changeset.
* subversion/libsvn_subr/deprecated.c: Include svn_path.h, to avoid an

"implicit declaration of function 'svn_path_split'" warning.

Move a deprecated function to the deprecated file (thus removing a warning).

* subversion/libsvn_subr/io.c

(svn_io_open_unique_file2, svn_io_open_unique_file): Move from here...

* subversion/libsvn_subr/deprecated.c

(svn_io_open_unique_file2, svn_io_open_unique_file): here.

  1. … 1 more file in changeset.
Followup to r33933: Don't duplicate a function declaration.

Suggested by: gstein

* subversion/libsvn_subr/opt.h

(svn_opt__args_to_target_array): Remove.

* subversion/libsvn_subr/deprecated.c:

Include private/svn_opt_private.h, which already has the above declaration.

  1. … 1 more file in changeset.
Finish removing false positive deprecation warnings for libsvn_subst.

See r33904 for further information.

* subversion/libsvn_subr/deprecated.c

Add symbols from opt.c.

* subversion/libsvn_subr/opt.c:

Move deprecated symbols out, as needed.

* subversion/libsvn_subr/opt.h:


  1. … 2 more files in changeset.
Remove false positive deprecation warnings for part of libsvn_subst.

See r33904 for further information.

* subversion/libsvn_subr/deprecated.c


* subversion/libsvn_subr/subst.c:

Move deprecated symbols out, as needed.

  1. … 1 more file in changeset.