Checkout Tools
  • last updated 7 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Remove extra ';' in r25068 and some older examples of the same.

* subversion/libsvn_client/repos_diff_summarize.c (open_root):

* subversion/libsvn_fs_util/mergeinfo-sqlite-index.c (get_mergeinfo_for_path):

* subversion/libsvn_ra_dav/fetch.c (getlocks_end_element):

* subversion/mod_dav_svn/reports/replay.c (dav_svn__replay_report):

* subversion/svnadmin/main.c (subcommand_create):

Remove spurious ';'

  1. … 4 more files in changeset.
With cmpilato, restore the distinction between requested depth and

reported depth, as discussed in this mail and the thread around it:

From: Vlad Georgescu <>


Subject: Re: [PATCH] Make sparse-directories checkouts/updates \

work with old servers

Date: Fri, 04 May 2007 08:35:06 +0300

Message-ID: <>

This involved reverting portions of r24493 and r24468, plus some

additional changes. Further work will be required to make sure the

client reliably transmits svn_depth_unknown to indicate that no

specific new depth was requested (i.e., that we're not in the

"upgrade" scenario referred to in Vlad's mails), and that the server

does receive a specific requested depth, that it does the right thing.

Review by: vgeorgescu

* subversion/libsvn_ra_serf/update.c

(make_update_reporter): Send depth again. Insert a comment about

representing depth appropriately for transmission across the wire.

* subversion/libsvn_ra_svn/client.c

(ra_svn_update, ra_svn_switch, ra_svn_status, ra_svn_diff): Send

depth again.

* subversion/libsvn_repos/reporter.c

(report_baton_t): Rename 'default_depth' to 'requested_depth', and

explain very clearly what it is, using small words, so you'll be

sure to understand.

(write_path_info): Just error if depth is svn_depth_unknown.

(svn_repos__begin_report): Rename 'default_depth' argument to 'depth',

assign it to b->requested_depth.

(svn_repos_set_path2, svn_repos_link_path2): Default to


* subversion/libsvn_ra_svn/protocol

(update, switch, status, diff): Restore depth parameter.

* subversion/svnserve/serve.c

(set_path, link_path): Default depth to svn_depth_infinity again.

(update, switch_cmd, status, diff): Parse optional depth parameter again.

(accept_report): Change RECURSE parameter back to DEPTH.

* subversion/mod_dav_svn/reports/update.c

(dav_svn__update_report): Expect a "depth" element, possibly falling

back to "recurse".

* subversion/libsvn_ra_dav/fetch.c

(make_reporter): Always send requested depth.

  1. … 6 more files in changeset.
* subversion/libsvn_ra_dav/fetch.c

(DIR_DEPTH): New macro.

(start_element, end_element): Use DIR_DEPTH macro instead of

checking array element counts directly.

* libsvn_ra_dav/fetch.c

Gack! Revert a portion of r24680 that wasn't intended for commit (like,

say, this whole file).

* notes/sparse-directories.txt

Add a complication I thought of regarding client-side editor "filtering".

* subversion/libsvn_ra_dav/fetch.c

[Edits accidentally committed but REVERTED in r24681]

  1. … 1 more file in changeset.
Follow up to r24468: adjust protocol sent from client.

Reviewed by: dlr

* subversion/libsvn_ra_serf/update.c

(struct report_baton): Get rid of unused depth field.

(make_update_reporter): Don't send "depth" anymore, don't set it in baton.

(set_path, link_path): Unconditionally send depth.

* subversion/libsvn_ra_dav/fetch.c

(reporter_set_path, reporter_link_path): Unconditionally send depth.

* subversion/libsvn_ra_svn/client.c

(ra_svn_update, ra_svn_switch, ra_svn_status, ra_svn_diff): Don't

send depth anymore, just send recurse based on depth.

  1. … 2 more files in changeset.
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.
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.
Incorporate comments by malcolm.

* subversion/libsvn_ra_dav/ra_dav.h

* subversion/libsvn_ra_dav/fetch.c

* subversion/libsvn_ra_dav/merge.c

Docstring updates.

* subversion/libsvn_ra_dav/props.c

Comment + docstring updates.

(svn_ra_dav__do_proppatch): Make the proppatch failure the topmost

failure instead of the deepest (most hard to reach) failure.

  1. … 3 more files in changeset.
Merge r22555:22710 from ra_dav-refactoring branch, closing.
  1. … 11 more files in changeset.
Only supply output parameters for desired values to retrieve from

apr_hash_this(). Pass NULL for unnecessary parameters.

* subversion/libsvn_wc/props.c

(svn_wc__wcprops_write): Key is not needed.

* subversion/libsvn_wc/entries.c

(walker_helper): Key-len is not needed.

* subversion/libsvn_wc/log.c

(log_do_committed): Key-len is not needed.

* subversion/libsvn_client/copy.c

(remove_tmpfiles): Key-len and Val are not needed.

* subversion/libsvn_client/commit_util.c

(look_up_committable): Key is not needed.

(svn_client__do_commit): Key and Key-len are not needed.

* subversion/svnlook/main.c

(print_tree): Key and Key-len are not needed.

* subversion/bindings/java/javahl/native/SVNClient.cpp

Bump up the copyright year.

(SVNClient::propertyGet): Key is not needed.

* subversion/bindings/java/javahl/native/SVNAdmin.cpp

Bump up the copyright year.

(SVNAdmin::lslocks): Key is not needed.

* subversion/mod_dav_svn/repos.c

(deliver): Key-len is not needed.

* subversion/mod_dav_svn/reports/get-locks.c

(dav_svn__get_locks_report): Key is not needed.

* subversion/tests/svn_test_fs.c

Bump up the copyright year.

(get_dir_entries): Key and Key-len are not needed.

(svn_test__validate_tree): Val is not needed.

* subversion/libsvn_repos/dump.c

(write_hash_to_stringbuf): Val is not needed.

* subversion/libsvn_repos/load.c

Bump up the copyright year.

(remove_node_props): Key-len and Val are not needed.

* subversion/libsvn_repos/delta.c

(delta_dirs): Key and Key-len are not needed.

* subversion/libsvn_ra_dav/props.c

(svn_ra_dav__do_stat): Key is not needed. Val is not needed.

* subversion/libsvn_ra_dav/fetch.c

(svn_ra_dav__get_dir): Val is not needed.

(start_element): Key is not needed.

* subversion/svnserve/serve.c

(get_locks): Key is not needed.

* subversion/libsvn_fs_fs/fs_fs.c

(write_final_changed_path_info): Key-len is not needed.

Patch by: Kamesh Jayachandran <>

  1. … 17 more files in changeset.
Remove shimmery Neon code.

Note: This commit removes the remainder of the Neon 0.23 shim code,

but also fixes a bug which crept in on the other shim-removal commits:

the SVN_RA_DAV__XML_* constants were not compatible with the new

parser callbacks.

* subversion/libsvn_ra_dav/ra_dav.h



SVN_RA_DAV__XML_INVALID): Renumber so we can return them

to Neon immediately.




svn_ra_dav__parsed_request_compat): Now obsolete, removed.

* subversion/libsvn_ra_dav/props.c

(propfind_ctx_t): Add field for cdata-collection.

(validate_element): Remove unused parameter now that it's not used

as a parser callback anymore.



svn_ra_dav__get_props): Adjust for new parser interface.

* subversion/libsvn_ra_dav/fetch.c

(drev_end_element): Fix return value.

* subversion/libsvn_ra_dav/util.c







svn_ra_dav__parsed_reuest_compat): Now obsolete, removed.


end_err_element): The return values of the interfaces these functions

implement are not defined in NE_XML_* terms, but 0/non-0 instead. So,

don't use NE_XML_* (or their SVN_RA_DAV__XML_* equivalents).

(wrapper_start_element): Set an error on malformed XML.

(parsed_request): Remove neon shim part.

  1. … 3 more files in changeset.
Migrate more parsers to post Neon 0.23 parser interface, eliminating

manual tracking of errors where possible.

Note: No real compatibility is lost here:

we haven't supported Neon 0.23 for a looong time.

* subversion/libsvn_ra_dav/ra_dav.h

* subversion/libsvn_ra_dav/util.c

(svn_ra_dav__xml_collect_cdata): New. Collects cdata into a stringbuf.

* subversion/libsvn_ra_dav/merge.c

(start_element): Adjust to new interface, making sure we only collect

required cdata.

(end_element): Adjust to new interface.

(merge_ctx_t): Add fields to collect cdata into. Remove 'err' field, as

we no longer need to manually track errors.

(svn_ra_dav__merge_activity): Stop tracking errors manually. Also adjust

for new parser interface.

* subversion/libsvn_ra_dav/fetch.c

(drev_baton_t): New. We need a place to store collected cdata.


drev_end_element): Adjust to new interface and start using baton.

(svn_ra_dav__get_dated_revision): Initialize baton and adjust for new

parser interface.

* subversion/libsvn_ra_dav/options.c

(options_ctx_t): Add fields to collect cdata into.

(validate_element): No longer part of the parser interface; remove

unused parameter.

(start_element): Adjust to new interface. Also make sure we collect

only wanted cdata.

(end_element): Adjust to new interface.

(svn_ra_dav__get_activity_collection): Adjust to new parser interface.

  1. … 4 more files in changeset.
Remove what has become overengineering.

Note: *Some* callers want to know about the Location header,

but since the request now lives past the

svn_ra_dav__request_dispatch() call, they can simply query the value


* subversion/libsvn_ra_dav/ra_dav.h

* subversion/libsvn_ra_dav/util.c

(svn_ra_dav__request_interrogator): Obsoleted.

(svn_ra_dav__request_dispatch): Remove request interrogator and its baton.

(svn_ra_dav__request_get_location): New. Function to query the location

header without the manual free() hassle.

* subversion/libsvn_ra_dav/fetch.c

Adjust callers.

* subversion/libsvn_ra_dav/commit.c

Adjust callers.


checkout_resource): Eliminate manual tracking and free()-ing of the

Location header value.

  1. … 3 more files in changeset.
Fix ordering problem: custom_get_ctx_t.ctype never gets set because

interrogate_for_content_type is run *after* the request+response

have been processed.

* subversion/libsvn_ra_dav/fetch.c

(custom_get_ctx_t): Remove 'err' and 'ctype' fields. Add 'req' field. We need

access to the connection object anyway.

(interrogate_for_content_type): Removed. Now obsolete.

(custom_get_request): Adapt for changed custom_get_ctx_t.

(fetch_file_reader): Fetch the content type itself. Store errors in

the request structure, making them the preferred error returned by

our custom request runner.

Fix use-after-destruction breakage: stop autodestructing the request in


Note: With this commit we start relying on normal pool cleanup processes

on error, with explicit destruction on success in some callers.

* subversion/libsvn_ra_dav/ra_dav.h

* subversion/libsvn_ra_dav/util.c

(svn_ra_dav__request_dispatch): Stop destructing the request.

* subversion/libsvn_ra_dav/util.c

* subversion/libsvn_ra_dav/fetch.c

* subversion/libsvn_ra_dav/commit.c

Adjust callers to destroy the request themselves.

  1. … 3 more files in changeset.
Change signature for svn_ra_dav__request_dispatch() to use the new

svn_ra_dav__request_t structure.

* subversion/libsvn_ra_dav/ra_dav.h

(svn_ra_dav__request_t): Add 'url' and 'method' members.

* subversion/libsvn_ra_dav/util.c

Change svn_ra_dav__request_dispatch() callers.

(svn_ra_dav__request_dispatch): Remove parameters already in


(svn_ra_dav__request_create): Fill new members in svn_ra_dav__request_t.

* subversion/libsvn_ra_dav/commit.c

Change svn_ra_dav__request_dispatch() callers,

creating svn_ra_dav__request_t structures to pass to it.

(custom_get_request): While at it, add the response body reader using

svn_ra_dav__add_response_body_reader(), attaching its cleanup to the

- now available - svn_ra_dav__request_t cleanup.

  1. … 3 more files in changeset.
ra_dav: Remove an unnecessary field from an internal baton.

* subversion/libsvn_ra_dav/fetch.c

(struct get_locks_baton_t): Remove the "err" field.

(svn_ra_dav__get_locks): Adjust for the above change.

Patch by: Kamesh Jayachandran <>

Fix a couple of memory bugs.

* subversion/libsvn_ra_dav/commit.c

(checkout_resource): Set locn to NULL after it has been free'd so that

the memory does not get reused.

* subversion/libsvn_ra_dav/fetch.c

(svn_ra_dav__get_locks): Destroy subpool earlier so that it does not get

abandoned by the subsequent SVN_NO_ERROR returns.

  1. … 1 more file in changeset.
Don't check for a non-NULL error before calling svn_error_clear, since

the function will check for itself.

[in subversion/]

* bindings/swig/python/libsvn_swig_py/swigutil_py.c (svn_swig_py_notify_func,

svn_swig_py_notify_func2, svn_swig_py_status_func),

bindings/java/javahl/native/SVNAdmin.cpp (SVNAdmin::rmlocks),

libsvn_client/externals.c (relegate_external),

libsvn_ra_dav/fetch.c (custom_get_request, svn_ra_dav__get_locks),

libsvn_ra_dav/log.c (svn_ra_dav__get_log),

libsvn_ra_dav/merge.c (svn_ra_dav__merge_activity),

libsvn_subr/path.c (svn_path_split_if_file),

libsvn_wc/log.c (run_log),

libsvn_wc/update_editor.c (get_entry_url),

svn/main.c (main):

Remove checks for non-NULL errors before calling svn_error_clear().

  1. … 9 more files in changeset.
Remove support for Neon 0.24. 0.25 has been out for quite some time, and

by the time Subversion 1.5 hits the streets 0.24 will be trully ancient,

so there's no reason for us to continue bending over backwards to support


Reviewed by: dlr


(NEON_ALLOWED_LIST): Drop 0.24.7.

* subversion/libsvn_ra_dav/session.c

(ra_dav_got_schemes, svn_ra_dav__open): Drop !SVN_NEON_0_25 section,

make SVN_NEON_0_25 part unconditional.

(handle_creationdate_header, handle_lock_owner_header): Removed.

(pre_send_hook): Remove section specific to 0.24.

(post_send_hook): Unconditionally define.

(setup_neon_request_hook): Unifdef setup of post_send_hook.

(lock_receiver): Don't ifdef SVN_NEON_0_25 section.

* subversion/libsvn_ra_dav/fetch.c

(interrogate_for_content_type, custom_get_request): Drop !SVN_NEON_0_25

part, make the SVN_NEON_0_25 part unconditional.

(fetch_file_reader, get_file_reader): Unconditionally return an integer.

* subversion/libsvn_ra_dav/util.c

(ra_dav_error_exceptor, parsed_request,

svn_ra_dav__interrogate_for_location): Drop !SVN_NEON_0_25 part, make

SVN_NEON_0_25 part unconditional.

(spool_reader): Unconditionally return an integer.

  1. … 3 more files in changeset.
* subversion/libsvn_ra_dav/fetch.c

(end_element): Return SVN_NO_ERROR when we don't recognize an element.

Follow up to r21332. Clean up unused code and add a comment.

* subversion/libsvn_ra_dav/fetch.c

(report_baton_t): Drop err member.

(reporter_finish_report): Don't look for rb->err, it's not there anymore.

* subversion/libsvn_ra_dav/util.c

(parser_wrapper_baton_t): Add a comment explaining what this is.

  1. … 1 more file in changeset.
Follow up to r21442, fix build of fetch.c with neon 0.24.x.

* subversion/libsvn_ra_dav/fetch.c

(interrogate_for_content_type): Rename request to req to fix build.

Fix issue #660: Notify ra_dav user of repository redirection or


(The svn_error_codes.h portion of this change occurred in r21444.)

* subversion/include/svn_error_codes.h

(SVN_ERR_RA_DAV_RELOCATED): SVN_ERRDEF for moved/relocated repositories.

* subversion/libsvn_ra_dav/ra_dav.h

(interrogate_for_location): Add prototype.

(svn_ra_dav__request_dispatch): Update prototype to accept

interrogator regardless of Neon version.

* subversion/libsvn_ra_dav/commit.c

(interrogate_for_location): Move to util.c.

* subversion/libsvn_ra_dav/fetch.c

(interrogate_for_content_type): Make compatible with Neon < 0.25

using ne_add_response_header_handler. (A nicety made possible by

the remainder of this change.)

(custom_get_request): Always pass interrogate_for_content_type when

dispatching the request.

* subversion/libsvn_ra_dav/util.c

(interrogate_for_location): Move from commit.c and make compatible

with Neon < 0.25.

(parsed_request): For response status codes 301 and 302, provide an

error message with the new location of the repository based on the

Location response header.

(svn_ra_dav__request_dispatch): Update prototype to accept

interrogator regardless of Neon version.

Patch by: Daniel Westermann-Clark <>

(Tweaked by me.)

Suggested by: mbk


Reviewed by: me

  1. … 3 more files in changeset.
Oops, follow up to fix error introduced in r21351.

* subversion/libsvn_ra_dav/fetch.c

(getlocks_start_element): Correct name of macro.

Make ra_dav use a helper macro for generating errors about unexpected

elements. This should improve the consistency of the errors we return

in these cases.

Suggested by: dlr

* subversion/libsvn_ra_dav/ra_dav.h


* subversion/libsvn_ra_dav/file_revs.c

(start_element): Use UNEXPECTED_ELEMENT.

* subversion/libsvn_ra_dav/fetch.c

(getlocks_start_element, start_element): Ditto.

* subversion/libsvn_ra_dav/replay.c

(start_element): Ditto.

  1. … 3 more files in changeset.
Make error messages that occur during ra_dav's REPORT parsing actually


Prior to this change, there was no way for the various parser callbacks

to return an error during the parse. This meant that each of them used

their own means for propagating that error upstream (stashing it in the

baton and looking for it later), but in many cases that would be in vain

because ra_dav would notice that an error occurred and decide to return

a svn_error_t based on the current neon error status, which is usually

something like "200 OK" when nothing has gone wrong during the request,

which isn't much of an error. Thus the error that the callback stashed

is ignored.

This change creates a new set of callback types, which return svn_error_t

just like most Subversion functions. A set of wrappers accept the return

value of those callbacks and do the stash-in-the-baton bit for us, so it

doesn't have to be reimplemented every time and as a bonus will actually


This has not been done for the old style parsing, since it seems likely

that the compat code will go away someday, and it seems silly to implement

this twice just to delete part of it later.

This fixes issue #2601.

* subversion/libsvn_ra_dav/ra_dav.h



svn_ra_dav__endelm_cb_t): New callback types for report parsing.

(svn_ra_dav__parsed_request): Take new callback types, fix docs, they

were broken even before this change.

* subversion/libsvn_ra_dav/file_revs.c

(report_baton): Drop the error member.

(CHKERR): Removed.

(start_element, end_element, cdata_handler): Adapt to new callback type,

returning a svn_error_t instead of a neon error code.

(svn_ra_dav__get_file_revs): Remove handling of error field in the baton.

* subversion/libsvn_ra_dav/fetch.c

(CHKERR): Removed.

(gloc_start_element, getlocks_start_element,

getlocks_cdata_handler, getlocks_end_element,

start_element, cdata_handler, end_element): Adapt to new callback


* subversion/libsvn_ra_dav/replay.c

(replay_baton_t): Remove error field.

(start_element, end_element, cdata_handler): Adapt to new callback


(svn_ra_dav__replay): Remove handling of baton's error field.

* subversion/libsvn_ra_dav/util.c

(parser_wrapper_baton_t): New baton.

(wrapper_startelm_cb, wrapper_cdata_cb, wrapper_endelm_cb): Wrapper

functions to handle errors that occur in callback functions.

(parsed_request): Take new callback types. Handle the errors they

might return.

  1. … 4 more files in changeset.
1.4.x API: Fix svn_ra_get_dir2() to obey output parameters convention,

and also fix the underlying vtable implementation.

Re-order parameters:

* subversion/libsvn_ra/ra_loader.h (svn_ra_get_dir2)

* subversion/libsvn_ra/ra_loader.c (svn_ra_get_dir2)

* subversion/libsvn_ra_local/ra_plugin.c (svn_ra_local__get_dir)

* subversion/libsvn_ra_serf/serf.c (svn_ra_serf__get_dir)

* subversion/libsvn_ra_svn/client.c (ra_svn_get_dir)

* subversion/libsvn_ra_dav/ra_dav.h (svn_ra_dav__get_dir)

* subversion/libsvn_ra_dav/fetch.c (svn_ra_dav__get_dir)

Adjust calls to RA_VTABLE.get_dir():

* subversion/libsvn_ra/wrapper_template.h (compat_get_dir)

* subversion/libsvn_ra/ra_loader.c (svn_ra_get_dir, svn_ra_get_dir2)

Adjust calls to svn_ra_get_dir2():

* subversion/libsvn_client/repos_diff.c (get_dirprops_from_ra)

* subversion/libsvn_client/info.c (push_dir_info, svn_client_info)

* subversion/libsvn_client/prop_commands.c (remote_propget, remote_proplist)

* subversion/libsvn_client/list.c (get_dir_contents, svn_client_list)

  1. … 12 more files in changeset.