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

Changeset 873948 is being indexed.

Fix a bug in svn_repos_get_logs4(), whereby passing SVN_INVALID_REVNUM

for one of the range revisions causes incorrect results.

* subversion/libsvn_repos/log.c

(svn_repos_get_logs4): Lose redundate 'hist_start' and 'hist_end'

variables, and simply tweak 'start' and 'end' as necessary..

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

(test_funcs): No longer expect 'get_logs' test to fail.

Found by: glasser

  1. … 1 more file in changeset.
Add a regression test for a broken API.

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

(log_receiver): New function.

(get_logs): New test just for quickly verifying the sanity of

various revision ranges and limit values thrown at

svn_repos_get_logs4. Current expected to fail.

(test_funcs): Add reference to new test.

Don't include svn_md5.h and apr_md5.h in files which don't use these headers.

* subversion/include/svn_base64.h:

* subversion/libsvn_client/commit.c:

* subversion/libsvn_client/commit_util.c:

* subversion/libsvn_client/export.c:

* subversion/libsvn_fs_base/dag.c:

* subversion/libsvn_fs_base/fs.h:

* subversion/libsvn_fs_base/reps-strings.c:

* subversion/libsvn_fs_base/util/fs_skels.c:

* subversion/libsvn_fs_fs/dag.c:

* subversion/libsvn_fs_fs/fs_fs.c:

* subversion/libsvn_fs_fs/fs.h:

* subversion/libsvn_fs/fs-loader.c:

* subversion/libsvn_fs_fs/lock.c:

* subversion/libsvn_ra_neon/fetch.c:

* subversion/libsvn_ra_neon/get_dated_rev.c:

* subversion/libsvn_ra_neon/get_locations.c:

* subversion/libsvn_ra_neon/get_location_segments.c:

* subversion/libsvn_ra_svn/client.c:

* subversion/libsvn_ra_svn/editorp.c:

* subversion/libsvn_repos/reporter.c:

* subversion/libsvn_subr/cache-memcache.c:

* subversion/libsvn_subr/checksum.c:

* subversion/libsvn_subr/config_auth.c:

* subversion/libsvn_subr/config_file.c:

* subversion/libsvn_subr/md5.c:

* subversion/libsvn_subr/md5.h:

* subversion/libsvn_subr/svn_string.c:

* subversion/libsvn_wc/adm_crawler.c:

* subversion/libsvn_wc/adm_ops.c:

* subversion/libsvn_wc/questions.c:

* subversion/libsvn_wc/update_editor.c:

* subversion/mod_dav_svn/liveprops.c:

* subversion/mod_dav_svn/reports/mergeinfo.c:

* subversion/mod_dav_svn/reports/replay.c:

* subversion/mod_dav_svn/reports/update.c:

* subversion/svnserve/serve.c:

* subversion/tests/libsvn_fs_base/fs-base-test.c:

* subversion/tests/libsvn_repos/repos-test.c: Don't include svn_md5.h and

apr_md5.h in files which don't use these headers.

  1. … 37 more files in changeset.
Disable deprecation warnings during compilation of tests.

* subversion/tests/svn_test.h

  (SVN_DEPRECATED): Define as empty definition when

SVN_ENABLE_DEPRECATION_WARNINGS_IN_TESTS isn't defined.

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

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

* subversion/tests/libsvn_delta/vdelta-test.c:

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

* subversion/tests/libsvn_fs_base/changes-test.c:

* subversion/tests/libsvn_fs_base/fs-base-test.c:

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

* subversion/tests/libsvn_fs/locks-test.c:

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

* subversion/tests/libsvn_subr/hashdump-test.c:

* subversion/tests/libsvn_subr/opt-test.c:

* subversion/tests/libsvn_subr/string-test.c:

* subversion/tests/libsvn_subr/translate-test.c:

* subversion/tests/svn_test_fs.c: Include svn_test.h before other Subversion

   headers.

Suggested by: hwright

  1. … 14 more files in changeset.
Housekeeping: In the spirit of r27598, remove trailing whitespace in

our repository.

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

find . -name "*.$extsn" | xargs perl -pi.bak -e 'next if /^\f$/; s/\s+$/\n/'

done

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

enumerate here.)

  1. … 174 more files in changeset.
Fix issue #1796: prevent invalid log messages from entering the repository.

Although our client does not send invalid messages, a defective or

malicious client could, thus corrupting the repository metadata.

Patch by: Neels Janosch Hofmeyr <neels@elego.de>

(Tweaked by me; previous iterations reviewed by danielsh.)

* subversion/include/private/svn_utf_private.h: New file.

(svn_utf__is_valid): Moved here from libsvn_subr/utf_impl.h,

because needed in libsvn_repos.

* subversion/libsvn_subr/utf_impl.h: Include private/svn_utf_private.h.

(svn_utf__is_valid): Moved to svn_utf_private.h.

(svn_utf__last_valid): Add comment mentioning svn_utf__is_valid.

* subversion/libsvn_repos/fs-wrap.c

(validate_prop): Validate log messages.

* subversion/include/svn_repos.h

(svn_repos_fs_change_node_prop): Document validation behavior.

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

(prop_validation_commit_with_revprop): New helper function.

(prop_validation): New test.

(test_funcs): Run it.

  1. … 4 more files in changeset.
Merge the in-memory-cache branch to trunk.

See that branch's log for full details, but in short:

The branch rewrote various in-memory caches in FSFS to use a unified

API. By default this API is implemented by some in-process hashes,

but via a configuration file (db/fsfs.conf), it can use memcached

instead. Additionally, expanded fulltexts are cached if memcached is

available.

memcached is accessed with the apr_memcached API, which will be in a

future version (1.3.x branch, now) of apr-util, and is also available as an

separately-distributed library. The build system knows how to deal

with both.

Other things that changed:

* The test suite now has a config file; currently, the config file is

just used as the FSFS config file for any created repositories.

* New random APIs: svn_base64_encode_string2, svn_stream_from_string.

* ra_local ignores "FS warnings" instead of aborting.

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

(reporter_depth_exclude): Improve r28095 comment, explaining motivations.

Suggested by: glasser

Follow up to r28022: test that poking a path under an excluded path fails.

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

(reporter_depth_exclude): Try some illegal reporting, expect failure.

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

"set_path".

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

repository.

(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

member.

(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.

Eesh!

* 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

svn_ra_do_update2.

* subversion/libsvn_client/export.c

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

svn_ra_do_update2.

* 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_status,

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_status,

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_diff,

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

tree:

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

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

done

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 <peter@p12n.org>

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

Patch by: Jonathan Gilbert <o2w9gs702@sneakemail.com>

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

mergeability.

  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 <joe@sunstarsys.com>

* 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.