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

Changeset 1063429 is being indexed.

Followup r876252: Document fifth parameter passed to external merge tool.

* subversion/libsvn_subr/config_file.c

(svn_config_ensure): Tweak comment in generated .subversion/config

file to mention fifth parameter to merge-tool-cmd.

* /site/publish/docs/releases/1.7.html

(svnrdump, atomic-revprops): Update to clarify the status of the #3546 hook

script, and tweak wording while I'm here.

* COMMITTERS: Change my email address.

A follow-up to r1062916, found by a compiler warning.

* subversion/tests/svn_test_main.c

(do_test_num): Give printf() an explicit format string rather than

trusting the passed-in string, even though in fact we can see that

the passed-in string is safe.

On the ignore-mergeinfo-log branch:

Expand the API capability beyond just ignoring the svn:mergeinfo property,

and instead allow callers to provide a hash of proeprty names. The commandline

client will still only implement --ignore-mergeinfo.

* subversion/svn/log-cmd.c

(svn_cl__log): Provide a hash with just the mergeinfo property in it to


* subversion/include/svn_client.h

(svn_client_log6): Update docs, and parameter list to reflect the input hash.

* subversion/libsvn_client/deprecated.c

(svn_client_log5): Update wrapper.

* subversion/libsvn_client/log.c

(svn_client_log6): Update param list, and use a simplification for the call

to the ra layer.

On the ignore-mergeinfo-log branch:

Bring up-to-date with trunk.

  1. … 67 more files in changeset.
On the ignore-mergeinfo-log branch:

Rev the svn_repos_get_log4() interface to add an ignore_mergeinfo flag, but

don't actually use it (beyond some sanity checking).

* subversion/include/svn_repos.h

(svn_repos_get_logs5): New.

(svn_repos_get_logs4): Deprecate.

* subversion/libsvn_repos/deprecated.c

(svn_repos_get_logs4): New wrapper.

* subversion/libsvn_repos/log.c

(svn_repos_get_logs5): New, largely copied from svn_repos_get_logs4().

Do some parameter state checking as well.

Server-side fix for issue #3657 'dav update report handler in skelta mode can

cause spurious conflicts'.

This change has two parts that are loosely related:

1) It stops mod_dav_svn from ever sending the 'fetch-props' response to a

client, even when in skelta (i.e. send-all=false) mode. The server

already knows what properties have changed so now it simply sends them,

rather than telling the client to ask for them later. This prevents

the svn_delta_editor_t change_[file|dir]_prop callback from receiving

faux property changes when the client asks for *all* the properties.

See for all the

gory details.

2) The comments in our code frequently make reference to 'modern' servers

and clients in the context of mod_dav_svn. Unfortunately there is no such

thing as a pre-modern server, they are all modern! The use of the term

'modern' in our code comments predates Subversion 1.0.0, so the comments

are misleading and the special case code for pre-modern servers (or

clients) is unnecessary. The special-case code is interdependent with

the changes in #1 though, so these changes are being made in one commit,

despite the fact one could argue they are logically separate.

* subversion/libsvn_ra_neon/fetch.c

(report_baton_t, start_element): Remove comments about 'modern' servers and

replace as needed with discussion of whether we are in 'send-all' mode or


* subversion/mod_dav_svn/reports/update.c

(struct item_baton_t): Remove changed_props, committed_rev, committed_date,

and last_author members, none of these are necessary.

(close_helper): Simplify check for when we need to send remove-prop.

Remove code which sends 'fetch-props' to the client, we've already sent

them. Stop sending version-name, creationdate, and creator-displayname,

these were only needed by 'non-modern clients' which don't actually


(upd_change_xxx_prop): Whether we are in send-all mode or not, we have the

property changes already so send them now, rather than telling the client

to 'fetch-props' later. The only time we don't send the props is for

additions while not in send-all mode (i.e. skelta mode) since property

fetching is implied in addition.

Extend svn_subst_translate_string2() with another parameter, REPAIR, to allow

the caller to customize whether line ending repairs are performed.

As discussed at:

* subversion/include/svn_subst.h

(svn_subst_translate_string2): Add a REPAIR parameter. Update the

documentation of the function.

* subversion/libsvn_subr/subst.c

(svn_subst_translate_string2): Add a REPAIR parameter. Pass the value through

to translate_cstring().

* subversion/libsvn_subr/deprecated.c

(svn_subst_translate_string): Call svn_subst_translate_string2() with REPAIR

set to FALSE.

* subversion/svn/util.c

(svn_cl__edit_string_externally, svn_cl__get_log_message): Call

svn_subst_translate_string2() with REPAIR set to FALSE.

* subversion/svn/propset-cmd.c

(svn_cl__propset): Call svn_subst_translate_string2() with REPAIR set to


* subversion/svn/lock-cmd.c

(get_comment): Call svn_subst_translate_string2() with REPAIR set to FALSE.

* subversion/svnadmin/main.c

(set_revprop): Call svn_subst_translate_string2() with REPAIR set to FALSE.

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

(test_svn_subst_translate_string2): Call svn_subst_translate_string2() with

REPAIR set to FALSE. Also test that inconsistent line endings result in


(test_repairing_svn_subst_translate_string2): New test case that tests a

repairing translation.

(test_funcs): Add test_repairing_svn_subst_translate_string2.

Patch by: Danny Trebbien <dtrebbien{_AT_}>

On the 'uris-as-urls' branch, review and correct some use of the

svn_uri_* APIs. (One step of many similar ones.)

* subversion/mod_dav_svn/authz.c

(authz_read): Review/correct/rename uses of the svn_uri_* APIs.

* subversion/mod_dav_svn/mirror.c

(dav_svn__location_in_filter, dav_svn__location_body_filter): Same as above.

* subversion/mod_dav_svn/mod_dav_svn.c

(create_dir_config): Same as above.

* subversion/mod_dav_svn/reports/update.c

(make_child_baton): Same as above.

* subversion/mod_dav_svn/version.c

(dav_svn__build_lock_hash): Same as above.

* subversion/mod_dav_svn/repos.c

(get_parent_path): Revert to using svn_path_* APIs for now.

On the 'uris-as-urls' branch: Start using the svn_urlpath__*

functions in libsvn_ra_neon.

* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__request_get_location): Now use svn_urlpath__canonicalize().

(svn_ra_neon__uri_canonicalize): Remove.

* subversion/libsvn_subr/dirent_uri.c

(svn_urlpath__canonicalize): Add a note about why we decode/re-encode.

* subversion/libsvn_ra_neon/options.c

(end_element): Now use svn_urlpath__canonicalize().

* subversion/libsvn_ra_neon/props.c

(end_element): Now use svn_urlpath__canonicalize().

On the diff-optimizations-bytes branch:

Lose the datasource_opened flag of libsvn_diff/token.c#svn_diff__get_tokens,

because all of its callers now pass TRUE for it, since they all open the

datasources themselves.

[in subversion/libsvn_diff]

* diff.h, token.c

(svn_diff__get_tokens): Remove the datasource_opened parameter.

* diff.c, diff3.c, diff4.c:

Adjust callers.

On the 'uris-as-urls' branch: Generalize (privately) a class of

URL-path-related functions so they can be shared amongst mod_dav_svn,

libsvn_ra_serf, and libsvn_ra_neon.

* subversion/include/private/svn_fspath.h

(svn_urlpath__basename, svn_urlpath__dirname, svn_urlpath__join,

svn_urlpath__get_longest_ancestor, svn_urlpath__is_ancestor,

svn_urlpath__is_canonical, svn_urlpath__is_child,

svn_urlpath__is_root, svn_urlpath__canonicalize,

svn_urlpath__skip_ancestor, svn_urlpath__split): Renamed from


* subversion/libsvn_subr/dirent_uri.c

(svn_urlpath__canonicalize): Was


* subversion/libsvn_ra_serf/util.c

(): Track renamed svn_ra_serf__uri_* functions.

(svn_ra_serf__uri_canonicalize): Moved to


* subversion/libsvn_ra_serf/commit.c,

* subversion/libsvn_ra_serf/merge.c,

* subversion/libsvn_ra_serf/options.c,

* subversion/libsvn_ra_serf/property.c,

* subversion/libsvn_ra_serf/serf.c

(): Track renamed svn_ra_serf__uri_* functions.

On the 'uris-as-urls' branch:

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

* subversion/libsvn_fs_base/bdb/locks-table.c,

* subversion/libsvn_ra_neon/get_locks.c,

* subversion/libsvn_ra_serf/getlocks.c,

* subversion/libsvn_ra_serf/merge.c,

* subversion/libsvn_ra_serf/serf.c,

* subversion/libsvn_ra_serf/update.c,

* subversion/libsvn_ra_serf/util.c,

* subversion/libsvn_ra_svn/client.c,

* subversion/libsvn_ra_svn/editorp.c,

* subversion/svnrdump/dump_editor.c,

* subversion/svnserve/serve.c

Now #include "private/svn_fspath.h"

* build.conf

(libsvn_subr): Following up on r1062974, add private/svn_fspath.h to

the msvc-export definition to fix the shared library build on Windows.

On the 'uris-as-urls' branch: sync with trunk.

(Merged /subversion/trunk:r1061547-1062975)

    • ?
    • ?
    • ?
  1. … 11 more files in changeset.
* subversion/include/svn_dirent_uri.h

Move all svn_fspath__* function prototypes out of here, and...

* subversion/include/private/svn_fspath.h

...into here, a new private header file for those functions.

* subversion/libsvn_client/list.c,

* subversion/libsvn_client/merge.c,

* subversion/libsvn_client/mergeinfo.c,

* subversion/libsvn_delta/path_driver.c,

* subversion/libsvn_fs_base/dag.c,

* subversion/libsvn_fs_base/tree.c,

* subversion/libsvn_fs_fs/dag.c,

* subversion/libsvn_fs_fs/lock.c,

* subversion/libsvn_fs_fs/tree.c,

* subversion/libsvn_ra_local/ra_plugin.c,

* subversion/libsvn_repos/reporter.c,

* subversion/libsvn_subr/dirent_uri.c,

* subversion/libsvn_subr/mergeinfo.c,

* subversion/libsvn_wc/status.c,

* subversion/svnlook/main.c,

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

Now include "private/svn_fspath.h"

    • ?
  1. … 3 more files in changeset.
On the 'uris-as-urls' branch: Continue reviewing/reworking use of the

svn_uri_* APIs.

* subversion/libsvn_ra_serf/ra_serf.h

(svn_ra_serf__uri_basename, svn_ra_serf__uri_dirname,

svn_ra_serf__uri_get_longest_ancestor, svn_ra_serf__uri_is_ancestor,

svn_ra_serf__uri_is_canonical, svn_ra_serf__uri_is_child,

svn_ra_serf__uri_is_root, svn_ra_serf__uri_join,

svn_ra_serf__uri_skip_ancestor, svn_ra_serf__uri_split): New #defines.

(svn_ra_serf__uri_canonicalize): Replace this function with a new one.

* subversion/libsvn_ra_serf/util.c

(svn_ra_serf__uri_canonicalize): Replace the previous version of

this with a simpler version that doesn't accept relpaths. Callers


(svn_ra_serf__get_relative_path): Update use of svn_uri_* functions

to something else.

(svn_ra_serf__discover_vcc): Same as above. Also, fix what appears

to be a possibly endless looping condition (an is-empty check on a

path that will never be).

* subversion/libsvn_ra_serf/merge.c

(end_merge, svn_ra_serf__merge_lock_token_list): Update

use of svn_uri_* functions to something else, and update calls to


* subversion/libsvn_ra_serf/commit.c

(setup_copy_dir_headers, delete_entry, add_directory, add_file):

Same as above.

* subversion/libsvn_ra_serf/serf.c

(path_dirent_walker, svn_ra_serf__get_dir): Same as above.

* subversion/libsvn_ra_serf/update.c

(end_report): Same as above.

* subversion/libsvn_ra_serf/getlocks.c

(end_getlocks): Same as above.

* subversion/libsvn_ra_serf/options.c

(capabilities_headers_iterator_callback): Update call to


* subversion/libsvn_ra_serf/property.c

(end_propfind, svn_ra_serf__get_baseline_info): Update calls to


    • ?
    • ?
    • ?
Add an option to the C and Python tests so we can run/list a subset of the

tests based on their mode (e.g. list only the XFAIL tests in the entire


* build/

(TestHarness.__init__): Add mode_filter argument.

( If listing rather than running the tests, summarize the

number of tests expected to pass. Adjust the expected log format for

SKIP and XFAIL when listing the test.


TestHarness._run_py_test): Accept --mode-filter option.

* subversion/tests/cmdline/svntest/

(TestSpawningThread.run_one): Support --mode-filter option.

(TestRunner.list): Filter test listing based on --mode-filter option,

default to all tests. Adjust the spacing of the test information so it

lines up with the header printed in execute_tests().

(run_one_test): Filter tests run based on --mode-filter option, default

to all tests.

(TestRunner.get_mode): New.

(_create_parser): Handle --mode-filter.

(execute_tests): If listing tests, then don't print the test header if

all the tests in that list are filtered per --mode-filter.

* subversion/tests/svn_test.h

(svn_test_mode_t): Add svn_test_all enum.

* subversion/tests/svn_test_main.c

(mode_filter): New global svn_test_mode_t test option.

(mode_filter_opt): New option enum.

(cl_options): New --mode-filter option.

(do_test_num): Support printing an optional header and communicating back

to the caller that we did so. If we specified a --mode-filter, only

run/list the tests that match the filter. Adjust the spacing of the

test list output to match that of the Python test listing.

(main): Parse --mode-filter. Move printing of test headers for --list

option into do_test_num().


(_usage_exit): Add --mode-filter to usage text.

(mode_filter): New global variable.

(global): Accept --mode-filter as a valid option, pass it to


On the 'uris-as-urls' branch, review and correct some use of the

svn_uri_* APIs. (One step of many similar ones.)

* subversion/svnserve/serve.c

(authz_check_access, set_path, delete_path, link_path, reparent,

unlock_paths, get_file, get_dir, update, switch_cmd, status, diff,

get_mergeinfo, log_cmd, check_path, stat_cmd, get_locations,

get_location_segments, get_file_revs, lock, lock_many, unlock,

unlock_many, get_lock, get_locks, get_deleted_rev, find_repos,

serve): Review/correct/rename uses of the svn_uri_* APIs.

On the diff-optimizations-bytes branch:

Speed up prefix/suffix scanning by processing data within chunks in separate

loops, and reading and comparing with machine-word granularity.

This is still implemented in a generic way, for an arbitrary number of files

(no special case code for file_len == 2). However, it's quite heavy code this

way (and a lot slower than having special case code), so I'm mainly

recording this for posterity :-), and will probably replace it soon with

three special case versions (for 2, 3 and 4 files).

* subversion/libsvn_diff/diff_file.c

(contains_eol): Quickly check if an apr_size_t chunk contains an eol

character (mainly copy-n-paste from eol.c#svn_eol__find_eol_start).

(find_identical_prefix): Inside a chunk, process data between eol characters

in a separate loop, reading and comparing with machine-word granularity.

(find_identical_suffix): Inside a chunk, process data in separate loops,

reading and comparing with machine-word granularity.

Patch by: stefan2

(Generified by me to implement it for N files.)

* subversion/tests/cmdline/ print httpd program name on


* build/ac-macros/neon.m4

(SVN_LIB_NEON): Look for neon-config if --with-neon was not passed.

On the diff-optimizations-bytes branch:


Move one of the wild ideas to a "Rejected ideas" section, because it's a

bad idea. Trying to skip a mismatching line to keep forward scanning going

can lead to missynchronization.

On the diff-optimizations-bytes branch:

As a small extra optimization, count lines in a local variable during prefix


* subversion/libsvn_diff/diff_file.c

(find_identical_prefix): Use a local variable to count the number of lines,

to make it slightly more efficient.

Suggested by: stefan2

On the 'uris-as-urls' branch:


Add another bit of TODO stuff, suggested by rhuijben.

On the 'uris-as-urls' branch, review and correct some use of the

svn_uri_* APIs. (One step of many similar ones.)

* subversion/libsvn_ra_neon/fetch.c

(svn_ra_neon__get_dir): Review/correct/rename uses of the svn_uri_* APIs.

* subversion/libsvn_ra_neon/get_locks.c

(get_locks_baton_t): Comment tweak.

(getlocks_end_element, svn_ra_neon__get_locks):

Review/correct/rename uses of the svn_uri_* APIs.

* subversion/libsvn_ra_neon/options.c

(end_element): Now use svn_ra_neon__uri_canonicalize().

* subversion/libsvn_ra_neon/ra_neon.h,

* subversion/libsvn_ra_neon/util.c

(svn_ra_neon__request_get_location): Now use


(svn_ra_neon__uri_canonicalize): New function.

* subversion/libsvn_ra_neon/props.c

(end_element): Now use svn_ra_neon__uri_canonicalize().

(svn_ra_neon__search_for_starting_props): Avoid using svn_uri_* for


    • ?
    • ?
On the 'uris-as-urls' branch, review and correct some use of the

svn_uri_* APIs. (One step of many similar ones.)

* subversion/svnrdump/dump_editor.h

(struct dir_baton): Note that the copyfrom_path is a relpath and

abspath is an fspath.

* subversion/svnrdump/dump_editor.c

(make_dir_baton): Use path APIs where applicable. Leave a FIXME

comment, while here.

(dump_node): Use path APIs where applicable.

(open_directory): Correct the use of path APIs.

    • ?
    • ?
On the 'uris-as-urls' branch, review and correct some use of the

svn_uri_* APIs. (One step of many similar ones.)

* subversion/svn/merge-cmd.c

(svn_cl__merge): Review, correct (as needed), and rename uses of the

svn_uri_* API.

* subversion/svn/switch-cmd.c

(svn_cl__switch): Same as above.

* subversion/svn/checkout-cmd.c

(svn_cl__checkout): Same as above.

* subversion/svn/info-cmd.c

(svn_cl__info): Same as above.

* subversion/svn/log-cmd.c

(log_entry_receiver): Same as above.

* subversion/svn/diff-cmd.c

(summarize_regular): Same as above, but also fixes preexisting URI

encoding bugs.

(summarize_xml, svn_cl__diff): Replace uses of svn_cl__path_join()

with more explicit code.

* subversion/svn/export-cmd.c

(svn_cl__export): Same as above, but also fixes a preexisting URI

encoding bug.

* subversion/svn/cl.h,

(svn_cl__path_join): Remove as unused.

* subversion/svn/util.c

(svn_cl__path_join): Remove as unused.

(svn_cl__opt_parse_path): Track renamed svn_uri_canonicalize() function.

    • ?
    • ?
On the 'uris-as-urls' branch, review and correct some use of the

svn_uri_* APIs. (One step of many similar ones.)

* subversion/mod_authz_svn/mod_authz_svn.c

(canonicalize_uri): New helper function.

(create_authz_svn_dir_config, req_check_access): Use

canonicalize_uri() instead of the svn_uri_* libraries.

* subversion/svnsync/main.c

(do_initialize): Review, correct (as needed), and rename uses of the

svn_uri_* API.