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

Changeset 868096 is being indexed.

Reinstate svn_depth_exclude (removed in r27958), but only in the

"server" side. Specifically, completely disable it at the

command-line (which should have been done before r27958), and document

it as not being supported in the wc or client libs in 1.5, but make

the (relatively straightforward) changes to the repos reporter to

enable 1.5 servers to support svn_depth_exclude arguments to


Because this can't be tested by the "svn" client, add a libsvn_repos

unit test to test it.

* subversion/include/svn_types.h

(svn_depth_t): Add svn_depth_exclude as -1 again; document (in a

private comment) that it is only supported on the server in 1.5.

* subversion/libsvn_subr/kitchensink.c

(svn_depth_to_word, svn_depth_from_word): Support "exclude" again

(as before r27958).

* subversion/libsvn_repos/reporter.c

(Theory of operation, read_path_info, write_path_info): Let

svn_depth_exclude be serialized in the reporter file (shifting each

depth value up one value).

(delta_dirs): Don't do the "delete" logic for excluded paths. Don't

call update_entry for excluded paths.

* subversion/include/svn_repos.h

(svn_repos_set_path3): Document that the revision argument may be

SVN_INVALID_REVNUM when depth=exclude.

* subversion/svn/main.c

(main): Don't allow --depth=exclude on the command line.

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

(reporter_depth_exclude): New test.

(test_funcs): It passes.

  1. … 6 more files in changeset.
Fix a test editor in tests/libsvn_repos to properly handle change_dir_prop.

This requires introducing directory batons instead of just reusing the

edit baton.

* subversion/tests/libsvn_repos/dir-delta-editor.c

(edit_baton): Remove comment saying it's used for directory batons.

(dir_baton): New.

(test_delete_entry, test_open_root, test_open_directory,

test_add_directory, test_open_file, test_add_file): Adjust to use

dir_baton struct.

(test_change_dir_prop): Adjust to use dir_baton struct; don't use

the property name (!) as the pathname.

  1. … 1 more file in changeset.
* subversion/libsvn_repos/repos-test.c

(nls_receiver): Fix a test check which flatly fails to detect the

condition it is intended to.

Housekeeping: In the spirit of r26317, remove trailing whitespace in our


(This touches files in various and sundry parts of the tree, which I shan't

enumerate here.)

  1. … 93 more files in changeset.
Add peg revision parameter to new svn_repos_node_location_segments() API.

(This is the first of multiple commits whereby I have the pleasure of

propogating this addition back through the corresponding RA APIs,

fallback code, etc. Yay!)

* subversion/include/svn_repos.h

(svn_repos_node_location_segments): Add a peg revision parameter.

* subversion/libsvn_repos/rev_hunt.c

(maybe_crop_and_send_segment): New helper.

(svn_repos_node_location_segments): Add and use a peg revision parameter.

* subversion/svnserve/serve.c,

* subversion/libsvn_ra_local/ra_plugin.c,

* subversion/mod_dav_svn/reports/get-location-segments.c

Callers of svn_repos_node_location_segments() updated to pass peg

revision (same as start revision for these invocations at the moment).

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

(check_location_segments): Add peg revision and end revision parameters.

(node_location_segments): Add some tests that flex the new peg

revision parameter.

  1. … 5 more files in changeset.
Improve the C tests for svn_repos_node_location_segments().

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

(nls_receiver, check_location_segments): Check the segment's

range_end member as the end-of-list sentry, not the range_start


(node_location_segments): Add a test to cover the segments of the

root directory.

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

(node_location_segments): Expand this test, still with success.

Fix an overlap in the test data I accidentally introduced.

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

(node_location_segments): Use a unique repository name.

Complete first draft of svn_repos_node_location_segments() API.

* subversion/libsvn_repos/rev_hunt.c

(nls_history_func): New helper.

(svn_repos_node_location_segments): Finish, I think, this function!

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

(test_funcs): No longer expect node_location_segments() to fail.

  1. … 1 more file in changeset.
* subversion/tests/libsvn_repos/repos-test.c

(node_location_segments): Fix a bug in the test, and expand the test

to cover another line of history.

Begin work on new API svn_repos_node_location_segments(), for issue

#2953 (Merge tracking information and operations not normalizing merge

sources to real repository locations).

* subversion/include/svn_types.h

(svn_location_segment_t): New structure.

(svn_location_segment_receiver_t): New callback type.

* subversion/include/svn_repos.h,

* subversion/libsvn_repos/rev_hunt.c

(svn_repos_node_location_segments): New function (not fully implemented).

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

(struct nls_receiver_baton): New structure.

(format_segment, nls_receiver, check_location_segments): New helpers.

(node_location_segments): New test.

(test_funcs): Add XFAIL reference to new node_location_segments test.

  1. … 3 more files in changeset.
Send copyfrom-args on updates *only* if the client explicitly requests them.

This keeps the 1.5 servers backward-compatible. Because incoming

copyfrom args cause old clients to error, they should only be

requested by new clients that understand them. This means adding a

new boolean 'send_copyfrom_args' to the main libsvn_repos

editor-driver, svn_ra_do_update2(), and all four RA implementations.


* subversion/include/svn_repos.h

(svn_repos_begin_report2): new 'send_copyfrom_args' argument.

* subversion/libsvn_repos/reporter.c

(report_baton_t): add new boolean to reporter baton.

(svn_repos_begin_report2): take new boolean arg, put in baton.

(add_file_smartly): only try to discover copyfrom args if the

new boolean is set (i.e. been requested by caller).

* subversion/include/svn_ra.h

(svn_ra_do_update2): new 'send_copyfrom_args' argument.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): update declaration.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_do_update2): update declaration and switching func.

(svn_ra_do_update): pass FALSE to old version of function.

* subversion/libsvn_ra/wrapper_template.h

(compat_do_update): pass FALSE to compat wrapper.

* subversion/libsvn_client/update.c

(svn_client__update_internal): pass new arg value of TRUE to


* subversion/libsvn_client/export.c

(svn_client_export4): always pass new arg value of FALSE to


* subversion/libsvn_ra_local/ra_plugin.c

(make_reporter): take new argument, pass it to svn_repos_begin_report2.

(svn_ra_local__do_update): take new arg, pass to make_reporter.

(svn_ra_local__do_switch): pass FALSE for new arg. For now.


svn_ra_local_do_diff): pass FALSE for new arg.

* subversion/libsvn_ra_neon/fetch.c

(report_baton_t): add new boolean to reporter baton.

(svn_ra_neon__do_update): take new arg, pass to make_reporter.

(svn_ra_neon__do_switch): pass FALSE for new arg. For now.


svn_ra_neon_do_diff): pass FALSE for new arg.

(make_reporter): take new arg, put in reporter baton. Send new

"<S:send-copyfrom-args>" element in report request.

* subversion/libsvn_ra_neon/ra_neon.h

(svn_ra_neon__do_update): update declaration.

* subversion/mod_dav_svn/reports/update.c

(dav_svn__update_report): look for new report element, pass the new

arg into svn_repos_begin_report2.

* subversion/libsvn_ra_svn/client.c

(ra_svn_update): transmit new arg as boolean in update-request tuple.

* subversion/svnserve/serve.c

(accept_report): take new boolean, pass to svn_repos_begin_report2.

(update): possibly parse new optional boolean in update-request tuple,

pass to accept_report.

(switch): pass FALSE to new accept_report arg. For now.

(status, diff): pass FALSE to new accept_report arg.

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

(rmlocks): pass FALSE to new svn_repos_begin_report2 arg.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serdf__do_update): take new arg.

* subversion/libsvn_ra_serf/update.c

(report_context_t): add new boolean to reporter baton.

(make_update_reporter): take new boolean arg, put in reporter baton.

Send new "<S:send-copyfrom-args>" element.

(svn_ra_serf__do_update): take new arg, pass to make_update_reporter.

(svn_ra_serf__do_switch): pass FALSE for new arg. For now.


svn_ra_serf__do_status): pass FALSE for new arg.

  1. … 16 more files in changeset.
Channeling Erik Hülsmann, remove all trailing whitespace within our source


for extsn in c h cpp java py pl rb; do

sed -i -e 's/[ \t]*$//' `find . -name "*.$extsn" | xargs grep '[ \t]$' -l`


Inspired by: ehu

  1. … 448 more files in changeset.
Follow-up to r26222.

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

(rmlocks): Update call to svn_repos_begin_report2.

Followup to r24861: replace a docstring with a brief comment.

* subversion/libsvn_repos/repos.c

* subversion/libsvn_subr/config_file.c

* subversion/tests/libsvn_diff/diff-diff3-test.c

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

(NL) Replace docstring with a brief comment.

Patch by: Peter Samuelson <>

  1. … 3 more files in changeset.
Change of convention for multiline string literal. No semantics changes.

Patch by: Jonathan Gilbert <>

Tweaked by: me

* subversion/libsvn_repos/repos.c

* subversion/libsvn_subr/config_file.c

* subversion/tests/libsvn_diff/diff-diff3-test.c

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

(NL) Introduce shorter version of APR_EOL_STR.

() Replace APR_EOL_STR with NL macro in string literals. Move it to line with

text and align NL macro to end on the 79th column.

  1. … 3 more files in changeset.
* subversion/tests/libsvn_repos/repos-test.c

Code formatting changes only -- no logic changes.

Merge the sparse-directories branch to trunk.

See notes/sparse-directories.txt for work remaining. Special thanks

to dlr, lundblad, and malcolm for their help in getting the branch to


  1. … 70 more files in changeset.
Fix a bug in the authz code, related to issue #2388: if the authz global access

check is inconclusive (ie. no decision could be made), access should be denied,

not authorized.

Patch by: Joe Schaefer <>

* subversion/libsvn_repos/authz.c

(authz_global_parse_section): Continue walking the authz config as long as

the access is not determined.

(authz_get_global_access): Return FALSE if the access could not be

conclusively determined.

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

(authz): Add a section to the test configuration that triggers the bug. Fix

the test loop to actually run all unit tests.

  1. … 1 more file in changeset.
Replace calls to apr_array_push() with invocations of the APR_ARRAY_PUSH macro.

Followup to r22958.

* subversion/libsvn_fs_base/reps-strings.c

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

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

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/util/fs_skels.c

* subversion/libsvn_subr/error.c

* subversion/libsvn_subr/svn_string.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/target.c

* subversion/libsvn_subr/path.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_client/prop_commands.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/changelist.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/commit.c

* subversion/mod_dav_svn/reports/log.c

* subversion/mod_dav_svn/reports/update.c

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

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

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/rev_hunt.c

* subversion/svn/checkout-cmd.c

* subversion/svn/status-cmd.c

* subversion/libsvn_ra_dav/commit.c

* subversion/libsvn_ra_dav/fetch.c

* subversion/svnserve/serve.c

Use the APR_ARRAY_PUSH macro where appropriate.

  1. … 28 more files in changeset.
In the spirit of r22918, use the APR_ARRAY_IDX macro to index into arrays,

instead of referencing the elements of the array directly.

* subversion/libsvn_fs_base/reps-strings.c

* subversion/libsvn_fs_base/util/fs_skels.c

* subversion/libsvn_subr/error.c

* subversion/libsvn_subr/svn_string.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/target.c

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_client/locking_commands.c

* subversion/libsvn_client/diff.c

* subversion/libsvn_client/log.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_ra_serf/log.c

* subversion/mod_dav_svn/reports/update.c

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

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

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_ra_dav/log.c

* subversion/libsvn_ra_dav/fetch.c

* subversion/libsvn_ra_dav/replay.c

* subversion/svnserve/serve.c

Use APR_ARRAY_IDX where appropriate.

  1. … 20 more files in changeset.
* subversion/tests/libsvn_repos/repos-test.c (commit_editor_authz): Tweak

pool usage to avoid a core dump with pool debugging and --enable-dso.

See and its thread.

Patch by: Malcolm Rowe <>

Remove a "repos" test introduced in r21407 that didn't actually

involve the repos layer, and replace it with an extra line in a

pre-existing "fs" test. This test is XFAIL, but passes under BDB.

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

(created_rev_root): Removed.

(test_funcs): Removed created_rev_root.

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

(test_node_created_rev): Confirm that a newly-created txn root has

the same node_created_revs as the rev root it came from.

(test_funcs): Make test_node_created_rev an XFAIL.

  1. … 1 more file in changeset.
Simplify test for Issue #2608, which doesn't actually

require any revisions in the repository.

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

(created_rev_root): Don't bother making any revisions.

Follow up to r21407: a test that fails in some situations should

be marked as XFail!

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

(test_funcs): mark created_rev_root as XFailing for now.

New lower-level test for Issue #2608. Passes with bdb, fails with

fsfs. (There's no way to do a conditional XFAIL for C tests


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

(created_rev_root): New test for issue #2608.

(test_funcs): Add new test.

Finish issue #2600 -- svn diff follows history incorrectly on file in

renamed directory.

The problem was a bug in the svn_fs_closest_copy() implementations.

Fortunately, there are now C tests for both the FS and repos layers,

plus a Python test for the original 'svn diff' recipe, so I feel

pretty confident that this particular issue won't easily reappear.

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

(test_funcs): No longer expect node_locations2() to fail.

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

(test_funcs): No longer expect closest_copy_test() to fail.

* subversion/tests/cmdline/

(test_list): No longer expect diff_in_renamed_folder() to fail.

* subversion/libsvn_fs_fs/tree.c

(fs_closest_copy): Use the right dag_node_t when checking for the

item-created-in-copy-target special case.

* subversion/libsvn_fs_base/tree.c

(txn_body_closest_copy): Use the right dag_node_t when checking for

the item-created-in-copy-target special case.

  1. … 4 more files in changeset.
Add a new, currently XFAILing, test for issue #2600, a bug reported on

the mailing list (

Hopefully I'll have a solution soon.

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

(node_locations2): New.

(test_funcs): Reference the new test.

Fix for issue #2486: Svnserve 1.3 authz: writing on subfolder requires read

access on repository root. Removed overly restrictive tests for read access

when opening root or opening a directory.

Patch by: Lieven Govaerts <>

* subversion/libsvn_repos/commit.c:

(open_root): removed check on read access

(open_directory): removed check on read access

* subversion/tests/cmdline/

new file, contains tests for issue #2486.

* subversion/tests/cmdline/svntest/

(run_and_verify_commit): add --username and --password parameters to the


* subversion/tests/cmdline/svntest/

(get_authz_file_path): new function

(get_svnserve_conf_file_path): new function

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

(commit_editor_authz): removed a now obsolete part of the test.

  1. … 4 more files in changeset.
Reformat the code to use a consistent no-space-before-param-list-paren style.

See here for the vote that decided this:

From: "Peter N. Lundblad" <>

To: "Peter N. Lundblad" <>


Subject: Results of: [VOTE] New space-before-parens style

Date: Wed, 8 Feb 2006 12:00:35 +0100 (CET)

Message-ID: <Pine.LNX.4.55.0602080918350.10805@localhost.localdomain>

I took the opportunity to make spacing among all parens in SVN_ERR

macro calls consistent. But I did not address consistency of casts,

nor whether a function name should always appear below its return type

in declarations and definitions, nor whether there should be a space

before/after the "*" when declaring pointer return types.

* www/hacking.html

(coding-style): Document that we are no-space-before-paren now.

* everywhere: Reformat.

  1. … 363 more files in changeset.