Checkout
Bert Huijben
committed
on 07 Feb 09
Stop recanonicalizing the base url on every call of svn_path_url_add_component
by introducing svn_path_url_add_component2 that assumes the c… Show more
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

this.

(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

 (svn_cl__node_description):

* subversion/libsvn_wc/crop.c

 (svn_wc_crop_tree):

* subversion/libsvn_wc/util.c

 (svn_wc__path_switched):

* 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

 (handle_externals_desc_change):

* 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.

Show less