Checkout Tools
  • last updated 2 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
mod_dav_svn: Move the four source files which exist solely to implement a

REPORT handler into a reports/ subdirectory.

* build.conf (mod_dav_svn):

Add 'sources' directive to include the moved source.

* subversion/mod_dav_svn/reports/: New directory.

* subversion/mod_dav_svn/file_revs.c: Move...

* subversion/mod_dav_svn/reports/file-revs.c: ...to here.

* subversion/mod_dav_svn/log.c: Move...

* subversion/mod_dav_svn/reports/log.c: ...to here.

* subversion/mod_dav_svn/replay.c: Move...

* subversion/mod_dav_svn/reports/replay.c: ...to here.

* subversion/mod_dav_svn/update.c: Move...

* subversion/mod_dav_svn/reports/update.c: ...to here.

  1. … 9 more files in changeset.
mod_dav_svn: Fork general authz related code out of update.c into a new file,

and alter to observe double-underscore policy too.

* dav_svn.h

(dav_svn_authz_read_baton, dav_svn_allow_read, dav_svn_authz_read_func):

Add underscores, to give...

(dav_svn__authz_read_baton, dav_svn__allow_read, dav_svn__authz_read_func):

...these.

* update.c

(allow_read, authz_read, dav_svn_authz_read_func, dav_svn_allow_read):

Remove, moved to authz.c.

* authz.c: New file, forked from update.c

* deadprops.c, file_revs.c, liveprops.c, lock.c, log.c, replay.c, update.c,

version.c: Adapt callers.

  1. … 8 more files in changeset.
Migrate some general utility code from mod_dav_svn's update.c to util.c,

and apply double-underscore policy to it whilst doing so.

[in subversion/mod_dav_svn/]

* dav_svn.h (dav_svn_make_base64_output_stream): Rename...

(dav_svn__make_base64_output_stream): ...to this.

* update.c

(brigade_write_baton, brigade_write_fn, dav_svn_make_base64_output_stream):

Move out of this file.

* util.c

(brigade_write_baton, brigade_write_fn, dav_svn__make_base64_output_stream):

Move to this file, adding underscore.

* file_revs.c, replay.c, update.c: Change callers to new name.

  1. … 4 more files in changeset.
Attempt to remedy the intra-module code style inconsistencies in mod_dav_svn

by applying the following changes throughout:

Correct indentation levels.

Change non-standard if bracing to standard.

Sort and group includes: APR, HTTPD, SVN public, private.

Separate function definitions and similar with two blank lines.

Place function arguments in declarations and definitions one-per-line,

unless all can fit on a single line together.

Place function return type on a separate line, unless the entire declaration

can fit on a single line.

[in subversion/mod_dav_svn/]

* dav_svn.h

* activity.c

* deadprops.c

* file_revs.c

* liveprops.c

* lock.c

* log.c

* merge.c

* mod_dav_svn.c

* replay.c

* repos.c

* update.c

* util.c

* version.c

  1. … 13 more files in changeset.
Re-order the arguments of svn_txdelta_to_svndiff2(), a new API in 1.4,

so that they meet our conventions of:

- output parameters come first

- pool comes last

This has two advantages:

(1) Users of our APIs are not confused.

(2) The SWIG bindings don't need to use a different argument ordering

to the C API.

Also, rename the 'int version' parameter to 'int svndiff_version', for

consistency with other svn_txdelta functions.

* subversion/include/svn_delta.h

* subversion/bindings/swig/svn_delta.i

* subversion/libsvn_delta/svndiff.c

* subversion/libsvn_fs_base/reps-strings.c

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_ra_svn/editor.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_repos/dump.c

* subversion/mod_dav_svn/file_revs.c

* subversion/mod_dav_svn/repos.c

* subversion/mod_dav_svn/update.c

* subversion/tests/libsvn_delta/random-test.c

* subversion/tests/libsvn_delta/svndiff-test.c

  1. … 12 more files in changeset.
Correct double comma in comment relating to logging of commits.

Patch by: David Mahakian <tmoli42@gmx.net>

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Punctuation corrected.

* subversion/mod_dav_svn/update.c

(maybe_start_update_report): Remove an out of date comment, it seems that

dav_svn__send_xml has returned errors for some time.

Some more xml encoding related fixes for mod_dav_svn.

* subversion/mod_dav_svn/update.c

(absent_helper): Encode the basename of the path.

(upd_close_file): Don't pass elt directly to dav_svn__send_xml, it's not

good practice to use generated strings as the format string in that sort

of thing, even if it may be safe in this particular case.

* subversion/mod_dav_svn/replay.c

(change_dir_prop, change_file_prop): Encode the prop name.

  1. … 1 more file in changeset.
Fix invalid xml produced during an update report when a svn:author revprop

has non-xml-safe characters in their name.

Found by: striker

* subversion/mod_dav_svn/update.c

(close_helper): Escape the author before writing it out.

* subversion/tests/cmdline/diff_tests.py

(diff_weird_author): New test.

(test_list): Run the test.

  1. … 1 more file in changeset.
Simplify mod_dav_svn's internal authorization layer by creating a new helper

function, 'dav_svn_allow_read', which checks whether a user has access

to a particular resource. Callers who use this function do not need to

create svn_fs_revision_root objects in order to access authorization

information.

[ in subversion/mod_dav_svn ]

* dav_svn.h

(dav_svn_authz_read): Remove function.

(dav_svn_allow_read): New function.

* update.c

(allow_read): New function.

(authz_read): Rename from dav_svn_authz_read. Make static. Use 'allow_read'

to check whether the user has access to the specified rev / path.

(dav_svn_allow_read): New function.

* liveprops.c

(dav_svn_get_path_rev): Use 'dav_svn_allow_read' instead of

'dav_svn_authz_read'.

* lock.c

(check_readability): Remove function.

(dav_svn_get_locks, dav_svn_find_lock, dav_svn_has_locks,

dav_svn_append_locks, dav_svn_remove_lock, dav_svn_refresh_locks):

Use 'dav_svn_allow_read' instead of 'dav_svn_authz_read'.

  1. … 3 more files in changeset.
* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Kill some trailing whitespace that was

annoying me.

Update mod_dav_svn to avoid unnecessary path calculations when path-based

authorization is disabled. This change reduces the time required to run

'svn log' on a revision with 10,000 paths from 9 seconds to 0.1 seconds.

[in subversion/mod_dav_svn]

* dav_svn.h, update.c

(dav_svn_authz_read_func): New function. If authz is enabled, returns an

authz callback. Otherwise, returns NULL.

* file_revs.c, log.c, deadprops.c, update.c

(dav_svn__file_revs_report, dav_svn__log_report,

dav_svn_db_open, dav_svn__update_report,

dav_svn__get_locks_report): Use dav_svn_authz_read_func to get our authz

callback.

  1. … 5 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:

http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=111877

From: "Peter N. Lundblad" <peter@famlundblad.se>

To: "Peter N. Lundblad" <peter@famlundblad.se>

cc: dev@subversion.tigris.org

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. … 365 more files in changeset.
Add new svndiff1 diff encoding, along with support in all protocols

for the new diff encoding, while also allowing the old

encoding to still function in a way that is backwards compatible

for all older clients.

Add the ability to write this new encoding in the on-disk repository

format , defaulting to on, and add support for creating

repositories that do not use the new encoding, for people who need it.

* configure.in: Require zlib unconditionally

* notes/svndiff: Add svndiff1 description

* subversion/libsvn_fs_base/reps-strings.c

(svn_fs_base__rep_deltify): Use svn_txdelta_to_svndiff2.

* subversion/libsvn_fs_base/fs.c

(base_create): Default to newer format version.

If SVN_FS_CONFIG_FS_NO_SVNDIFF1 is set in the config opts,

use older format.

(check_format): Support both format 1 and 2.

* subversion/libsvn_fs_base/fs.h

(SVN_FS_BASE__FORMAT_NUMBER): Bump to 2

(SVN_FS_BASE__MIN_SVNDIFF1_FORMAT): Set to 2.

* subversion/libsvn_fs_base/util/fs_skels.c

(is_valid_rep_delta_chunk_skel): Version 1 is valid.

* subversion/svnadmin/main.c

(svnadmin__no_svndiff1): Add option.

(options): Add "no-svndiff1" option.

(cmd_table): Add svnadmin_no__svndiff1 to create command.

(struct svnadmin_opt_state): Add no_svndiff1

(subcommand_create): Set SVN_FS_CONFIG_NO_SVNDIFF1 in the hash if

approriate.

(main): Set no_svndiff1 if requested.

* subversion/include/svn_error_codes.h: Add

SVN_ERR_SVNDIFF_INVALID_COMPRESSED_DATA

* subversion/include/svn_fs.h: Add SVN_FS_CONFIG_NO_SVNDIFF1.

* subversion/include/svn_ra_svn.h: Add SVN_RA_SVN_CAP_SVNDIFF1.

* subversion/include/svn_delta.h: Add svn_txdelta_to_svndiff2.

* subversion/mod_dav_svn/dav_svn.h

(struct dav_resource_private): Add svndiff_version

* subversion/mod_dav_svn/file_revs.c

(struct file_rev_baton): Add svndiff_version

(file_rev_handler): Use svndiff version set in baton.

(dav_svn__file_revs_report): Get svndiff_version from private info.

* subversion/mod_dav_svn/update.c

(update_ctx_t): Add svndiff_version.

(upd_apply_textdelta): Use svndiff version set in baton.

(dav_svn__update_report): Get svndiff_version from private info.

* subversion/mod_dav_svn/repos.c: Include apr_lib.h

(accept_rec): New struct.

(get_entry): New function.

(do_header_Line): New function.

(sort_encoding_pref): New function.

(svn_dav__negotiate_encoding_prefs): New function.

(dav_svn__get_resource): Negotiate encoding preferences.

(dav_svn_deliver): Use svndiff1 if possible.

* subversion/tests/libsvn_delta/svndiff-test.c

(main): Add optional version argument.

Use svn_txdelta_to_svndiff2.

* subversion/testes/libsvn_delta/random-test.c

(random_test): Use svn_txdelta_to_svndiff2 and version 1 diffs.

* subversion/libsvn_repos/dump.c

(store_delta): Ditto.

* subversion/libsvn_ra_svn/client.c

(auth_response): Transmit svndiff1 capability.

(open_session): Ditto.

* subversion/libsvn_ra_svn/protocol: Document svndiff1 capability.

* subversion/libsvn_ra_svn/editor.c,

subversion/libsvn_ra_svn/editorp.c

(ra_svn_apply_textdelta): Use svn_txdelta_to_svndiff2, and use svndiff1

if supported.

* subversion/libsvn_delta/svndiff.c: Include zlib.h

(MIN_COMPRESS_SIZE): New macro.

(SVNDIFF1_COMPRESS_LEVEL): New macro.

(struct encoder_baton): Add version.

(zlib_encode): New function.

(window_handler): Add ability to produce svndiff1.

(svn_txdelta_to_svndiff2): New function.

(svn_txdelta_to_svndiff): Init version to zero.

(struct decode_baton): Add version.

(zlib_decode): New function.

(decode_window): Handle decoding svndiff1.

(write_handler): Ditto.

(read_window_header): Add version argment.

(svn_txdelta_read_svndiff_window): Pass version to decode_window.

(svn_txdelta_skip_svndiff_window): Ditto.

* subversion/libsvn_ra_dav/file_revs.c

(svn_ra_dav__get_file_revs): Set Accept-Encoding header

to specify svndiff1 as acceptable.

* subversion/libsvn_ra_dav/fetch.c

(reporter_finish_report): Set Accept-Encoding header

to specify svndiff1 as acceptable.

* subversion/svnserve/serve.c

(serve): Write out svndiff1 capability.

* subversion/libsvn_fs/fs_fs.c

(check_format): Support both format 1 and 2.

(rep_write_get_baton): Use svn_txdelta_to_svndiff2, and version 1.

(svn_fs_fs__create): Default to newer format version.

If SVN_FS_CONFIG_FS_NO_SVNDIFF1 is set in the config opts,

use older format.

* subversion/libsvn_fs_fs/fs.h

(SVN_FS_FS__FORMAT_NUMBER): Bump to 2.

(SVN_FS_FS__MIN_SVNDIFF1_FORMAT): Set to 2.

  1. … 27 more files in changeset.
Fix error leaks from static functions.

Found by: julianfoad

* subversion/libsvn_wc/entries.c

(write_entry): Make function return 'void', since it cannot return

a failure to its caller.

(svn_wc__entries_write): Remove SVN_ERR() wrapper from a call to

write_entry(), matching the usage further down.

* subversion/libsvn_wc/adm_files.c

(init_adm): Add SVN_ERR() wrapper to handle errors returned from

make_empty_adm().

* subversion/mod_dav_svn/update.c

(upd_open_directory): Return the result of calling open_helper(),

rather than leaking it.

* subversion/svndumpfilter/main.c

(new_node_record): Add SVN_ERR() wrapper to handle errors returned

from output_revision().

  1. … 3 more files in changeset.
URI-escape paths in mod_dav_svn operational logging, because httpd's

ap_escape_logitem() is rather picky. For more details, see

http://subversion.tigris.org/servlets/ReadMsg?list=dev&msgNo=105977

From: "Karl Fogel" <kfogel@collab.net>

To: "C. Michael Pilato" <cmpilato@collab.net>

Cc: Justin Erenkrantz <justin@erenkrantz.com>, dev@subversion.tigris.org

Subject: Re: 1.3 now blocking on path escaping in httpd operational logging

Date: 27 Sep 2005 10:51:00 -0500

Message-ID: <857jd2wluj.fsf@newton.ch.collab.net>

and its surrounding thread.

* subversion/mod_dav_svn/file_revs.c

(dav_svn__file_revs_report): URI-encode path when logging 'blame' action.

* subversion/mod_dav_svn/log.c

(dav_svn__log_report): Same for 'log-all' and 'log-partial'.

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Same for 'checkout-or-export', 'update',

and 'remote-status'.

* subversion/mod_dav_svn/repos.c

(dav_svn_do_walk): Same for 'list-dir'.

* subversion/mod_dav_svn/lock.c

(dav_svn_append_locks): Same for 'lock'.

(dav_svn_remove_lock): Same for 'unlock'.

* subversion/mod_dav_svn/deadprops.c

(save_value): Same for 'revprop-change', but property value not path.

  1. … 5 more files in changeset.
Regularize the "high-level logging" descriptions produced by mod_dav_svn.

This should make them easier to parse.

Suggested by: kfogel

* subversion/mod_dav_svn/lock.c

(dav_svn_remove_lock, dav_svn_append_locks): use present-tense verbs.

* subversion/mod_dav_svn/version.c

(dav_svn_merge): use present-tense verb.

* subversion/mod_dav_svn/deadprops.c (save_value): reformat, change verb.

* subversion/mod_dav_svn/log.c (dav_svn__log_report): change verbs.

* subversion/mod_dav_svn/file_revs.c (dav_svn__file_revs_report):

remove preposition.

* subversion/mod_dav_svn/update.c (dav_svn__update_report): change

verbs, remove prepositions.

* subversion/mod_dav_svn/repos.c (dav_svn_do_walk): change verb.

  1. … 6 more files in changeset.
Continue adding high-level logging to mod_dav_svn. Followup to r15915.

Attempt to disambiguate {checkout, export, update, status -u, switch,

diff, merge}, all of which use the same custom report request.

It turns out that of these seven commands, the only pairs that

absolutely *cannot* be distinguished are checkout/export and diff/merge.

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): set SVN-ACTION environment variable to

"checkout/export", "update", "status -u", "switch", or "diff/merge".

Begin adding "high-level" logging to mod_dav_svn.

Have mod_dav_svn set the SVN-ACTION environment variable on particular

httpd request objects at opportune moments. Then, when apache logs

the request in accesslog, admins can also ask for the SVN-ACTION

variable to be written as well.

For example, svn actions can be written to separate logfile by adding

this line to httpd.conf:

CustomLog logs/svn_log "%t %u \"%{SVN-ACTION}e\"" env=SVN-ACTION

* subversion/mod_dav_svn/version.c

(dav_svn_merge): set SVN-ACTION to 'committed rNNNN'.

* subversion/mod_dav_svn/lock.c

(dav_svn_append_locks): set SVN-ACTION to 'locked '/path''.

(dav_svn_remove_lock): set SVN-ACTION to 'unlocked '/path''.

* subversion/mod_dav_svn/log.c

(dav_svn__log_report): set SVN-ACTION to 'log on '/path'' or

'log on some set of paths below '/path''.

* subversion/mod_dav_svn/file_revs.c

(dav_svn__file_revs_report): set SVN-ACTION to 'blame on '/path''.

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): set SVN-ACTION to 'update', though this

needs to get more specific in future commits.

  1. … 4 more files in changeset.
Fix a buglet noticed by Peter N. Lundblad <peter@famlundblad.se> (and

maybe some he didn't notice) whereby we shouldn't strip whitespace for

XML elements which contain paths because those paths might have

whitespace at their ends or beginnings.

Suggested by: Peter N. Lundblad <peter@famlundblad.se>

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Pass 0 for "strip_whitespace" when

fetching CDATA for the 'src-path', 'dst-path', and

'update-target', 'entry', and 'missing' XML elements. Also, allow

'update-target' to be empty -- that's the default value anyway.

* subversion/mod_dav_svn/log.c

(dav_svn__log_report): Use dav_xml_get_cdata(), passing 0 for

"strip_whitespace" when fetching CDATA for the 'path' XML element.

* subversion/mod_dav_svn/file_revs.c

(dav_svn__file_revs_report): Use dav_xml_get_cdata(), passing 0 for

"strip_whitespace" when fetching CDATA for the 'path' XML element.

* subversion/mod_dav_svn/version.c

(dav_svn__build_lock_hash): Use dav_xml_get_cdata(), stripping

whitespace from the lock token, but not from the lock path. Also,

invert a logic check for an quick-out loop condition (to buy back

4 columns of indentation -- wasted columns *really* bother me).

* subversion/tests/clients/cmdline/update_tests.py

(test_list): No longer expect update_xml_unsafe_dir to fail.

  1. … 4 more files in changeset.
Make some fixes based on reviews of r14041.

Review by: Karl Fogel <kfogel@collab.net>

Peter N. Lundblad <peter@famlundblad.se>

* subversion/mod_dav_svn/update.c

(malformed_element_error): Was empty_cdata_error(). Fix the error

message (Peter), and add a docstring (Karl). Callers updated.

(string_from_cdata_pieces): Remove as unnecessary, as

dav_xml_get_cdata predates this functions, and does the trick

(Peter).

Introduce a wrapper so that errno is always set to zero when calling

dav_new_error_tag.

* subversion/mod_dav_svn/dav_svn.h (dav_svn__new_error_tag): New.

* subversion/mod_dav_svn/util.c

(dav_svn__new_error_tag): New.

(dav_svn_convert_err): Use dav_svn__new_error_tag.

* subversion/mod_dav_svn/file_revs.c,

subversion/mod_dav_svn/log.c,

subversion/mod_dav_svn/update.c,

subversion/mod_dav_svn/version.c,

subversion/mod_dav_svn/repos.c: Replace all calls to dav_new_error_tag

with calls to dav_svn__new_error_tag.

  1. … 6 more files in changeset.
Finish issue #2268 (svn update of xml-unsafe dir (from within) http error).

* subversion/libsvn_ra_dav/fetch.c

(make_reporter): XML-escape "src-path" before it hits the wire.

While here, make all escapings of this sort use the same

stringbuf.

* subversion/mod_dav_svn/update.c

(string_from_cdata_pieces, empty_cdata_error):

(dav_svn__update_report): Go figure. Turns out the assumption we've

been making all along about our XML CDATA all being in a single

chunk just ain't valid anymore. Use the new helper functions to

concatenate CDATA chunks and eliminate lots of duplicated code.

Finally, re-organize some logic blocks.

* subversion/tests/clients/cmdline/update_tests.py

(update_xml_unsafe_dir): New test.

(test_list): Add reference to new test.

  1. … 2 more files in changeset.
Do not assume that svn_md5_digest_to_cstring will always return a

valid string. If its input digest is all 0's, it will return a NULL

instead. Adjust all callers to either handle the NULL correctly, or

use a new function that will always return an actual string.

* subversion/include/svn_md5.h

(svn_md5_digest_to_cstring_display): New version of

svn_md5_digest_to_cstring that always returns a valid string.

* subversion/libsvn_subr/md5.c

(svn_md5_digest_to_cstring_display): New.

The following callers needed to use the new function

svn_md5_digest_to_cstring_display.

* subversion/libsvn_fs_base/reps-strings.c: (svn_fs_base__rep_contents,

txn_body_read_rep)

* subversion/libsvn_fs_base/dag.c: (svn_fs_base__dag_finalize_edits)

* subversion/libsvn_wc/adm_crawler.c: (svn_wc_transmit_text_deltas)

* subversion/libsvn_wc/update_editor.c: (apply_textdelta, install_file)

* subversion/libsvn_wc/questions.c: (compare_and_verify)

* subversion/libsvn_ra_svn/client.c: (ra_svn_get_file)

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

* subversion/svnserve/serve.c: (get_file)

* subversion/libsvn_fs_fs/fs_fs.c: (representation_string, rep_read_contents)

* subversion/libsvn_fs_fs/lock.c: (make_digest)

The following callers needed to handle possible NULL checksums.

* subversion/mod_dav_svn/update.c: (upd_close_file)

* subversion/libsvn_repos/commit.c: (close_file)

* subversion/libsvn_fs_fs/dag.c: (svn_fs_fs__dag_finalize_edits)

  1. … 14 more files in changeset.
Finish part 2 (of 2) of issue #2258. Teach mod_dav_svn not to send

<txdelta> directives when not in "send-all" mode.

* subversion/mod_dav_svn/update.c

(upd_apply_textdelta): If not in "send-all" mode, use the dummy

window handler so not <txdelta> directive gets sent.

Finish issue #2259. Allow libsvn_ra_dav to tell mod_dav_svn, "I don't

care about actual text contents -- I just want to know *that* a file's

text changed, not *how*."

Given a local copy of the Subversion repository as of revision 8810, a

working copy of revision 1 of the trunk of that repository checked out

over ra-dav on the same box (localhost), and runs of 'svn st -u' on

that working copy before and after this fix, I see the operation go

from costing 53 seconds to 39 seconds, with 'user' times dropping from

5-6 seconds to under 1 second.

Of course, performance improvements only occur if both client and

server have this new code.

* subversion/libsvn_ra_dav/fetch.c

(make_reporter): When the client wants 'send-all' mode, but doesn't

care about actual text-deltas, add a notation to turn off

text-deltas to the REPORT request.

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Check for a 'text-deltas' directive, and

unless we're in 'send-all' mode *and* 'text-deltas' are requested,

don't have svn_repos_dir_delta() calculate text-deltas.

  1. … 1 more file in changeset.
Merge locking branch to trunk, by comparing trunkURL with branchURL.

This is not a test. This is an actual addition of a very large feature.

This merge passes 'make check' over all three RA implementations.

To see commit logs for this feature, examine /branches/locking, r11749:13570.

  1. … 183 more files in changeset.
A piece of issue #2199. Check paths entering Subversion via

mod_dav_svn custom REPORT requests for canonicalization, erroring if

they don't pass muster. (This was attempted once in r12738, reverted

in r12903. This time I'm shrinking the scope to just mod_dav_svn.)

* subversion/mod_dav_svn/dav_svn.h

* subversion/mod_dav_svn/util.c

(dav_svn__test_canonical): New.

* subversion/mod_dav_svn/file_revs.c (dav_svn__file_revs_report)

* subversion/mod_dav_svn/update.c (dav_svn__update_report)

* subversion/mod_dav_svn/log.c (dav_svn__log_report)

* subversion/mod_dav_svn/version.c (dav_svn__get_locations_report)

Check all paths delivered in the REPORT request body for

canonicalization. Also, use dav_error_new_tag() instead of

dev_new_error() wherever possible so users can actually see these

error returns.

  1. … 5 more files in changeset.
Revert r12738. I'm going to re-do that change, but *only* tweak

mod_dav_svn, not expose a new public (and not-even-half-implemented)

svn_path_is_canonical().

[Note from the future: this is done now, see r12904.]

  1. … 5 more files in changeset.
[[ This change was reverted in r12903, approached a little differently

in r12904. ]]

A piece of issue #2199. Check paths entering Subversion via

mod_dav_svn custom REPORT requests for canonicalization, erroring if

they don't pass muster.

* subversion/include/svn_path.h

(svn_path_is_canonical): New.

* subversion/libsvn_subr/path.c

(is_canonical): Remove existence dependency on NDEBUG define.

(svn_path_is_canonical): New, simple wrapper around is_canonical().

* subversion/mod_dav_svn/file_revs.c

(dav_svn__file_revs_report): Check the 'path' REPORT item for

canonicalization. Also, use dav_error_new_tag() instead of

dev_new_error() wherever possible so users can actually see these

error returns.

* subversion/mod_dav_svn/update.c

(dav_svn__update_report): Check the 'src-path', 'dst-path', and

'update-target' REPORT items for canonicalization. Also, use

dav_error_new_tag() instead of dev_new_error() wherever possible

so users can actually see these error returns.

* subversion/mod_dav_svn/log.c

(dav_svn__log_report): Check the 'path' REPORT item for

canonicalization. Also, use dav_error_new_tag() instead of

dev_new_error() wherever possible so users can actually see these

error returns.

* subversion/mod_dav_svn/version.c

(dav_svn__get_locations_report): Check the 'path' REPORT item for

canonicalization. Also, use dav_error_new_tag() instead of

dev_new_error() wherever possible so users can actually see these

error returns.

  1. … 5 more files in changeset.