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

Changeset 1186392 is being indexed.

Finish issue #3734 ('Add revision-based filtering to the dumpstream

load functionality'). Add support for the --revision (-r) option for

'svnadmin load' to facilitate incremental loads.

* subversion/include/svn_repos.h

(svn_repos_notify_action_t): Add 'svn_repos_notify_load_skipped_rev'

enum value.

(svn_repos_load_fs4, svn_repos_get_fs_build_parser4): New versions

of these APIs which add 'start_rev' and 'end_rev' parameters.

(svn_repos_load_fs3, svn_repos_get_fs_build_parser3): Deprecate.

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

(struct parse_baton): Add 'start_rev' and 'end_rev' members.

(struct revision_baton): Add 'skipped' member.

(new_revision_record): Don't create a transaction when skipping

revisions, but do notify about the skip.

(new_node_record, set_revision_property, set_node_property,

delete_node_property, remove_node_props, apply_textdelta,

set_fulltext, close_node, close_revision): Don't make any real FS

changes if we're skipping the current revision.

(svn_repos_load_fs4): Was svn_repos_load_fs3(). Add 'start_rev' and

'end_rev' parameters. Update call to svn_repos_get_fs_build_parser4().

(svn_repos_get_fs_build_parser4): Was svn_repos_get_fs_build_parser3().

Add 'start_rev' and 'end_rev' parameters, which are validated and

then stuff into the parse_baton.

* subversion/libsvn_repos/deprecated.c

(svn_repos_load_fs3): New wrapper around svn_repos_load_fs4().

(svn_repos_get_fs_build_parser3): New wrapper around


* subversion/svnadmin/main.c

(cmd_table): Cause the 'load' command to also accept the --revision (-r)


(repos_notify_handler): Handle the svn_repos_notify_load_skipped_rev

notification, too.

(optrev_to_revnum): New helper function.

(subcommand_load): Handle revision options now with an updated call

to svn_fs_load_fs4().

* subversion/tests/cmdline/

(load_ranges): New test.

(test_list): Add reference to new test.

Comment out confusing 'if (1)' placeholder statements.

Suggested by: stsp

* subversion/libsvn_fs_fs/fs_fs.c

(set_revision_proplist, revision_proplist, commit_body, recover_body):

Replace 'if (1)' with comments explaining the extra {} block. No functional


Revert r1186283, per the request of danielsh:

* STATUS: Approve r1185738 group.

Repair STATUS.

Merge r1186121, r1186231 from trunk:

* r1186121, r1186231

FSFS: Fix validation so it doesn't hork preexisting repositories that

triggered a bug once in their history.


Such repositories are unusable by 1.7.x without this revision.

Either this must be backported to 1.7.1 or r1186144 must be undone.


+1: danielsh, stsp, philip

* STATUS: Vote/approve r1186231
* STATUS: Vote for r1186121.

Remove the 1.7.x-r1180514 branch, reintegrated in r1186352.

Reintegrate the 1.7.x-r1180514 branch:

* r1180154, r1181090, r1181110, r1181215

Fix svn_rangelist_merge so it allocates new svn_merge_range_t elements

only when absolutely necessary.


This addresses a serious inefficiency in memory usage when

svn_rangelist_merge (or any of its callers like

svn_mergeinfo_catalog_merge and svn_mergeinfo_merge2) are called in

a loop. Prior to this change svn_rangelist_merge2 could potentially

reallocate *every* range in both rangelists. For example, the peak

working set memory for the reintegrate merge described in was 1,324,664 KB

with trunk@1179545. With this group that drops to 26,880 KB.




r1180154 is the primary fix with some new tests. r1181090 and r1181215

is a minor optimization along with more new tests. r1181110 is just

a doc string typo fix.


+1: pburba, rhuijben, stsp

    • ?
* STATUS: Approve r1180154 group.

Add a trivial change to avoid merge conflicts.
* STATUS: Cast some votes
* STATUS: Add branch and vote
On 1.7.x-issue4035-r1185738 branch: merge r1185768, r1185886 and r1186240.

On 1.7.x-issue4035-r1185738 branch: merge r1185738 and r1185763 and resolve

conflicts in

Create branch to resolve 1.7.x issue 4035 and r1185738 group conflict
On the moves-scan-log branch, add a simple heuristic that allows 'svn update'

to obtain information about server-side moves from the revision log.

Work in progress, review if you're interested, else ignore.

* subversion/libsvn_client/update.c

(scan_moves_log_recevier, scan_moves_log_receiver_baton): New.

(scan_for_server_side_moves): New helper function that scans the

revision log for server-side moves before running the update.

Currently prints results it finds via SVN_DBG, but nothing uses them.

(update_internal): Call scan_for_server_side_moves().

Add a branch to experiment with heuristics for detecting server-side moves

on the client side by scanning the revision log (i.e. svn log -v output).

Not sure if this will get anywhere yet.

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

(renumber_mergeinfo_revs): Use svn_mergeinfo_merge2().

[ Reverted in r1186370. ]

No functional change.

* subversion/libsvn_fs_fs/fs_fs.c

(set_revision_proplist): Remove a unneeded if-statement, and a superfluous

return statement.

* STATUS: Nominate the r1180154 group.

* subversion/libsvn_client/relocate.c

(relocate_externals): Remove an initialized but unused variable.

Update calls to three deprecated APIs to use svn_client_get_repos_root()

instead, mark the deprecated APIs as such and move their implementations to

'deprecated.c'. A follow-up to r1186244.

* subversion/include/svn_client.h

(svn_client_get_repos_root): Mention that it may open a temporary RA


(svn_client_root_url_from_path, svn_client_uuid_from_url,

svn_client_uuid_from_path2): Mark as deprecated.

* subversion/libsvn_client/ra.c

(svn_client_uuid_from_url, svn_client_uuid_from_path2): Move these ...

* subversion/libsvn_client/url.c

(svn_client_root_url_from_path): ... and this ...

* subversion/libsvn_client/deprecated.c

(svn_client_uuid_from_url, svn_client_uuid_from_path2,

svn_client_root_url_from_path): ... to here.

* subversion/libsvn_client/cmdline.c

(svn_client_args_to_target_array2): Update calls.

* subversion/libsvn_client/copy.c

(repos_to_wc_copy_locked): Update calls.

* subversion/libsvn_client/merge.c

(merge_cousins_and_supplement_mergeinfo): Update calls.

* subversion/libsvn_client/relocate.c

(relocate_externals, svn_client_relocate2): Update calls.

Merge r1185911, r1185918 from trunk:

* r1185911, r1185918

Fix reporting of depth empty directories


Without this patch 'svn update' sometimes tries to apply updates to nodes

that don't exist locally.

(1.6 received the same nodes but filtered the incoming data before

applying it to the working copy)


r1185911 adds a simple test for this case and r1185918 resolves this



+1: rhuijben, stsp, philip

On the 1.7.x-r1180154 branch: Merge r1181090, r1181110, and r1181215 from

trunk -- No conflicts.

* STATUS: Vote/approve r1185911/r1185918.
On the 1.7.x-r1180154 branch: Merge r1180154 from trunk.

* src-branch-1.7.x

Mergeinfo change only.

* subversion/include/svn_sorts.h

* subversion/libsvn_client/merge.c

* subversion/libsvn_subr/sorts.c

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

Clean merge.

* subversion/libsvn_subr/mergeinfo.c

Got a lot of conflicts arising from the fact that r1149519, the only

relevant change to mergeinfo.c since we branched 1.7, has not been

backported, nor can it be because it revved svn_rangelist_merge to

svn_rangelist_merge2 adding a scratch pool. r1149519 also claimed to

modify the "rangelist in-place", but it didn't do all it could do on

that front (hence r1180154). Since r1180154 is effectively a full-on

reimplementation of svn_rangelist_merge2 these conflicts can largely

be ignored. After this commit the only difference between

svn_rangelist_merge2's implementation in


svn_rangelist_merge's implementation in


@1186252 is that the latter uses a local subpool in place of a

passed-in scratch and takes apr_array_header_t **rangelist argument

rather than a apr_array_header_t *rangelist.

    • ?
* STATUS: Propose r1186240, note conflicts
Promote svn_client__get_repos_root() to a public API, deprecating three APIs

that performed subsets of that operation. Calls to the deprecated APIs are

not updated in this commit.

* subversion/libsvn_client/client.h

(svn_client__get_repos_root): Rename and move to ...

* subversion/include/svn_client.h

(svn_client_get_repos_root): ... here.

(svn_client_root_url_from_path, svn_client_uuid_from_url,

svn_client_uuid_from_path2): Deprecate.

* subversion/libsvn_client/cmdline.c

(check_root_url_of_target): Track the rename.

* subversion/libsvn_client/merge.c

(merge_locked, merge_reintegrate_locked, merge_peg_locked): Same.

* subversion/libsvn_client/url.c

(svn_client_root_url_from_path): Same.

* subversion/libsvn_client/util.c

(svn_client__get_repos_root): Rename.