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

Changeset 1575973 is being indexed.

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. … 148 more files in changeset.
* subversion/libsvn_repos/load.c

Remove unused #include's.

(parse_text_block): Bring the doc string up to date.

* STATUS: Nominate r1575525 group
Following up on r1575525, extend test coverage of exporting externals with

some recursive external scenarios and simplify the original fix to avoid

double export of file externals in directory externals and to allow a direct

export of a specific file external, which was just skipped before.

* subversion/libsvn_client/export.c

(export_info_baton): Remove unneeded boolean.

(export_node): Check if we are exporting the file external itself, or the

working copy containing the file external instead of just for file


(do_export): Rename back to...

(svn_client_export5): ... this, as we don't need the boolean (which

accidentally introduced double exports of the same file).

(svn_client_export5): Remove wrapper.

* subversion/tests/cmdline/

(export_file_externals2): New test.

(test_list): Add test.

Fix a few 64 -> 32 integer conversion warnings in FSX.

* subversion/libsvn_fs_x/noderevs.c

(binary_noderev_t): Use apr_size_t as string index.

(svn_fs_x__read_noderevs_container): Update stream -> struct conversions.

* subversion/libsvn_fs_x/changes.c

(svn_fs_x__read_changes_container): Fix 64 -> 32 bit int conversion warning.

Since we only select the *initial*

array capacity here, we may as well

potentially shorten to int.

On the fsfs-ucsnorm branch: Synced with trunk up to r1575684.
  1. … 344 more files in changeset.
Merge r1571214 from trunk:

* r1571214

Avoid adding duplicated rows in an sqlite hint table when calling

'svn upgrade' repeatedly on a working copy.


Adding the same information multiple times is not a problem for sqlite,

but it adds unnecessary information to wc.db, which will be slightly

bigger than necessary in this corner case.


+1: rhuijben, ivan, brane

Merge r1498000 from trunk:

* r1498000

Improve error handling for inherited property requests by using the

transition based xml parser in libsvn_ra_serf.


This maintenance work which usually doesn't belong in a patch release

makes it possible to properly detect if this request should be restarted

on non-chunk-enabled proxies.


+1: rhuijben, ivan, brane

Fix test failures with FSX caused by r1567023.

* subversion/libsvn_fs_x/noderevs.c

(svn_fs_x__write_noderevs_container): We forgot to reduce the number

of sub-streams when we reduced

the number of struct members.

Fix various 64 -> 32 bit integer conversion warnings in FSX.

* subversion/libsvn_fs_x/noderevs.h

(svn_fs_x__noderevs_create): Since INITIAL_COUNT is currently set to

some fixed value by the callers, we might

as well just turn it into an int.

* subversion/libsvn_fs_x/noderevs.c

(svn_fs_x__noderevs_create): INITIAL_COUNT is int now and thus compatible

with APR array sizes.

* subversion/libsvn_fs_x/pack.c

(initialize_pack_context): Make MAX_ITEMS an int since we are using it

with APR arrays anyways.

(pack_log_addressed): Safely limit MAX_ITEMS to int.

Instead of assuming implicit limits on l2p index structure sizes in FSFS,

explicitly limit the number of entries per page to 2G and the number of

pages per index file to 2G as well. Both limits are quite theoretical

and the practical limits imposed by memory size and APR are lower than


Hence, we can happily convert page counts and sizes to int32. This fixes

various 64 -> 32 bit integer conversion warnings.

* subversion/libsvn_fs_fs/index.c

(l2p_header_t): The PAGE_SIZE is now explicitly 32 bits.

(svn_fs_fs__l2p_index_create): Check that we keep within the new 2G limits.

Explicitly cast afterwards to silence false

conversion warnings.

(get_l2p_header_body): Cast to the new struct member type.

(l2p_page_info_baton_t): The PAGE_COUNT is now explicitly 32 bits as well.

(l2p_page_info_copy): Update casts to use the correct type. Explicitly

handle index page table overflows.

Fix a 64 -> 32 integer conversion warning.

* subversion/libsvn_fs_fs/temp_serializer.c

(dir_data_t): The COUNT member is actually an int.

(serialize_dir): Use the int type consistently with COUNT.

* subversion/libsvn_fs_fs/transaction.c

(shards_spanned): Fix a 64 -> 32 bit conversion warning.

* branches/1.8.x/STATUS: Cast some votes, approving r1498000 and r1571214.

Fix and regression test for issue #4427, "export external files".

Exports from working copies were omitting file externals due

to a logic bug in the externals handling of svn_client_export5().

* subversion/libsvn_client/export.c

(export_info_baton): Add 'exporting_external' flag.

(export_node): Don't skip file externals if 'exporting_external' flag is set.

(do_export): Wrapper for logic of svn_client_export5(), with an additional

'exporting_external' parameter which is passed to exporting_node() via

the export_info_baton. Set the flag if recursing into do_export() to

export an external.

(svn_client_export5): Re-implement as wrapper of do_export().

* subversion/tests/cmdline/

(export_file_external, test_list): New regression test which passes

with the above change and fails without it.

Avoid needless prefetching txdelta data as part of our block_read() feature

because it is computationally expensive - mainly due to unzip.

Hence, we tune block_read as follows: Don't prefetch the windows of a

representation beyond the current block if we are not currently reading

a window from that rep. Also, skip cached windows entirely using the

cached size information instead of reading window dimensions from disk.

* subversion/libsvn_fs_fs/cached_data.c

(get_window_header): Getter function to fetch the window size info

from cache.

(cache_windows): Drop the unused FULLTEXT_LEN parameter and add a limit

to the prefetch length. Fetch the continuation offset

for cached windows from that cache instead of fetching

the window header from disk.


block_read_contents): Pass through the MAX_OFFSET parameter.

(block_read): Set the MAX_OFFSET parameter to the end of the current

block unless we requested a window from the current rep.

* subversion/include/private/svn_delta_private.h

(svn_txdelta__read_svndiff_window_sizes): Remove.

* subversion/libsvn_delta/svndiff.c

(svn_txdelta__read_svndiff_window_sizes): Remove.

Follow-up to r1575428: Be consistent in how revnums are being

used in cache keys.

* subversion/libsvn_fs_fs/fs.h

(window_cache_key_t): Widen the revision argument to 64 bit here as well.

* subversion/libsvn_fs_fs/cached_data.c

(read_delta_window): Handle a cache configuration edge case more nicely.

When txdelta caching is off, don't attempt to

prefetch (mainly txdelta window) data.

Make it easier to remove unused high-priority entries from the membuffer

cache by reducing their priority every time they survive a cleanup

without having seen a recent hit.

* subversion/libsvn_subr/cache-membuffer.c

(let_entry_age): Once the hit count reaches zero, aging eats away

the entry's priority.

* subversion/libsvn_subr/cache-membuffer.c

(get_group_index): Tune the key->bucket mapping function to distribute

cached objects more evenly across the segments.

Reduce the number of high-prio objects cluttering the cache.

* subversion/libsvn_fs_fs/caching.c

(svn_fs_fs__initialize_caches): Representation headers are only slightly

more "important" than the actual windows.

Assign the same prio; their small size

alone increases their cache survivability.

* subversion/libsvn_fs_fs/cached_data.c

(set_cached_window): Typo fix, no functional change.

In FSFS, fix the suggested "optimal" order in which reporters should

process directory contents.

* subversion/libsvn_fs_fs/pack.c

(compare_dir_entries_format7): For a while now, on-disk order is

"_ascending_ by path".

In FSFS, remove padding from cache key structs to simplify handling.

Also, document why we want them to be 16 bytes whenever we can help it.

* subversion/libsvn_fs_fs/fs.h

(pair_cache_key_t): Widen revision type to eliminate padding on

platforms with sizeof(long) != 8. Document the

struct size rationale.

(window_cache_key_t): Document the struct size rationale.

Get rid of remnant of the format7/FSX codevelopment. Since we don't

modify data while packing and reordering it, our cache keys don't need

to be pack-aware. Thus, replace representation_cache_key_t with the

generic pair_cache_key_t.

* subversion/libsvn_fs_fs/fs.h

(representation_cache_key_t): Remove.

* subversion/libsvn_fs_fs/caching.c

(svn_fs_fs__initialize_caches): Use the generic type as key.

* subversion/libsvn_fs_fs/cached_data.c



block_read_contents): Switch to the generic type. The pack state is

of no concern, hence don't use it in the key.

* subversion/libsvn_repos/load-fs-vtable.c

(set_node_property): Don't change the caller's data through an input

parameter: get rid of a horrible casting away of 'const'. This bug wasn't

hurting our code but could hurt other users of the API.

Follow-up to r1575418: Fix svnadmin hotcopy --incremental packed test.

* subversion/tests/cmdline/

(check_hotcopy_fsfs_fsx): We can ignore *-lock files when comparing

hotcopy source and target.

Enable FSFS format 7 repositories to be packed without completely

blocking commits. We simply introduce a separate lock file for

'svnadmin pack' and take out the global write lock for packing

revprops and switching the shard to "packed" state.

Most of the run time is spent building the revision pack file

and does not require any synchronization with writers.

Packing large shards no longer causes noticable delays to committers.

This is important for format 7 because the data reorganization may

involes significantly more I/O than the append-only process used

with previous formats. We can now pack during 'svnadmin load'

without delaying the process.

* subversion/libsvn_fs_fs/fs.h

(PATH_PACK_LOCK_FILE): Declare the new lock file name.

(SVN_FS_FS__MIN_PACK_LOCK_FORMAT): Define when that is available.

* subversion/libsvn_fs_fs/fs_fs.h

(svn_fs_fs__get_lock_on_filesystem): Publish previously static function.

* subversion/libsvn_fs_fs/fs_fs.c

(get_lock_on_filesystem): Rename to ...

(svn_fs_fs__get_lock_on_filesystem): ... this.

(with_some_lock_file): Update caller.

* subversion/libsvn_fs_fs/pack.c

(pack_baton): Extend by adding all previous parameters of the pack_*

functions as members. All pack_* function now use the

baton for their parameter passing.

(synced_pack_shard): Extracted from pack_shard; handles the revprop

packing and shard pack switch-over. This will

be executed while holding the global write lock.

(pack_shard): Wraps the above and adds the parts that don't require

the global write lock such as packing the rev data.

(pack_body): Use the baton to pass parameters along.

(svn_fs_fs__pack): When available, acquire only the pack-lock.

* subversion/libsvn_fs_fs/structure

(Layout of the FS directory): Document the new lock file and update

the doc for the global write-lock.

Use the correct type for revision numbers. Similar to r1575019 to fsfs.

While yes we're now limiting them to 32-bit effectively (despite the

svn_revnum_t type being wider on many platforms today), we shouldn't be using

a different type anywhere in our code so that we can change the type and not

have to go looking for all the places where we've done things like this. Yes,

this uses more memory at runtime, but this is the long term consequence of our

type choice for revision numbers.

* subversion/libsvn_fs_x/fs.h

(representation_cache_key_t): Use svn_revnum_t instead of apr_uint32_t.