libsvn_repos

Checkout Tools
  • last updated 8 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Fix various typos detected by codespell

* libsvn_client/add.c, libsvn_client/blame.c, libsvn_client/commit_util.c,

libsvn_client/conflicts.c, libsvn_client/copy.c, libsvn_client/diff.c,

libsvn_client/export.c, libsvn_client/import.c, libsvn_client/merge.c,

libsvn_client/mergeinfo.c, libsvn_client/mergeinfo.h, libsvn_client/patch.c,

libsvn_client/switch.c, libsvn_client/update.c, libsvn_delta/branch_compat.c,

libsvn_delta/compat.c, libsvn_delta/compose_delta.c, libsvn_delta/svndiff.c,

libsvn_delta/xdelta.c, libsvn_diff/deprecated.c, libsvn_diff/diff_file.c,

libsvn_fs/fs-loader.c, libsvn_fs_base/bdb/locks-table.c, libsvn_fs_base/fs.c,

libsvn_fs_base/key-gen.c, libsvn_fs_base/notes/fs-history,

libsvn_fs_base/reps-strings.c, libsvn_fs_base/tree.c,

libsvn_fs_fs/cached_data.c, libsvn_fs_fs/hotcopy.c, libsvn_fs_fs/index.c,

libsvn_fs_fs/low_level.c, libsvn_fs_fs/pack.c, libsvn_fs_fs/structure,

libsvn_fs_fs/temp_serializer.c, libsvn_fs_fs/transaction.c,

libsvn_fs_fs/tree.c, libsvn_fs_fs/util.h, libsvn_fs_x/cached_data.c,

libsvn_fs_x/caching.c, libsvn_fs_x/hotcopy.c, libsvn_fs_x/id.h,

libsvn_fs_x/index.c, libsvn_fs_x/low_level.c, libsvn_fs_x/pack.c,

libsvn_fs_x/rev_file.c, libsvn_fs_x/structure, libsvn_fs_x/temp_serializer.c,

libsvn_fs_x/transaction.c, libsvn_fs_x/tree.c, libsvn_fs_x/util.h,

libsvn_ra/ra_loader.c, libsvn_ra/ra_loader.h, libsvn_ra/util.c,

libsvn_ra/wrapper_template.h, libsvn_ra_local/ra_plugin.c,

libsvn_ra_serf/commit.c, libsvn_ra_serf/get_file.c,

libsvn_ra_serf/property.c, libsvn_ra_serf/ra_serf.h, libsvn_ra_serf/update.c,

libsvn_ra_serf/util.c, libsvn_ra_svn/client.c, libsvn_ra_svn/cyrus_auth.c,

libsvn_ra_svn/marshal.c, libsvn_repos/authz_parse.c, libsvn_repos/commit.c,

libsvn_repos/compat.c, libsvn_repos/hooks.c, libsvn_repos/load.c,

libsvn_repos/log.c, libsvn_repos/notify.c, libsvn_repos/repos.c,

libsvn_repos/repos.h, libsvn_subr/cache-memcache.c, libsvn_subr/cmdline.c,

libsvn_subr/config_file.c, libsvn_subr/date.c, libsvn_subr/gpg_agent.c,

libsvn_subr/io.c, libsvn_subr/object_pool.c, libsvn_subr/path.c,

libsvn_subr/prompt.c, libsvn_subr/string.c, libsvn_subr/sysinfo.c,

libsvn_subr/temp_serializer.c, libsvn_subr/utf.c, libsvn_subr/utf8proc.c,

libsvn_subr/version.c, libsvn_subr/win32_xlate.c, libsvn_subr/x509parse.c,

libsvn_wc/conflicts.c, libsvn_wc/conflicts.h, libsvn_wc/copy.c,

libsvn_wc/lock.c, libsvn_wc/wc_db.c, libsvn_wc/wc_db.h,

libsvn_wc/wc_db_private.h:

(): Spelling fixes

  1. … 89 more files in changeset.
* everywhere: Run tools/dev/remove-trailing-whitespace.sh to remove

trailing whitespace before we branch 1.14.

  1. … 99 more files in changeset.
Complete the upgrade of array insert/delete functions.

For issue #4840 "Merge assertion failure in svn_sort__array_insert".

This changes all remaining callers, in other areas of Subversion, to use the

new array insert/delete functions that return standard Subversion errors if

inputs are out of bounds, and removes the old versions of those functions.

These are private functions so the public API is not affected.

* subversion/include/private/svn_sorts_private.h

* subversion/libsvn_subr/sorts.c

(svn_sort__array_insert,

svn_sort__array_delete): Remove.

(svn_sort__array_insert2,

svn_sort__array_delete2): Rewrite as the only version, instead of calling

the old version. No functional change.

Elsewhere: update all callers.

  1. … 17 more files in changeset.
Various spelling fixes, no functional change

* contrib/client-side/svn-clean

(--exclude): s/exluded/excluded/

* subversion/include/svn_error_codes.h

(SVN_ERR_X509_CERT_VERIFY_FAILED): s/Certficate/Certificate/

* subversion/po/de.po,

subversion/po/ja.po,

subversion/po/ko.po,

subversion/po/pl.po,

subversion/po/sv.po:

(): s/Certficate/Certificate/; s/abandonded/abandoned/

* subversion/libsvn_repos/repos.c:

(): s/abandonded/abandoned/

* subversion/libsvn_repos/repos.c,

subversion/svnadmin/svnadmin.c,

subversion/tests/libsvn_client/client-test.c:

(): s/filesytem/filesystem/

  1. … 9 more files in changeset.
Adjust lifetime of the result returned from svn_repos__normalize_prop().

Previously, this function would make an unconditional copy of the value into

the result pool. While this may look convenient in some of the cases, there

is a downside of making unnecessary copies even if no normalization happened.

Instead of that, let's give the calling site control over the results' lifetime

by not making the copy if the input did not change. The callers may still dup()

the value if they need to, but with this approach there are no unavoidable

copies in various situations, such as where we would like to only update the

value if it changed or where we don't have an appropriate scratch pool, but

need to normalize the property value anyway.

* subversion/include/private/svn_repos_private.h

(svn_repos__normalize_prop): Adjust documentation.

* subversion/libsvn_repos/fs-wrap.c

(svn_repos__normalize_prop): Do not duplicate the input if no normalization

is required.

* subversion/libsvn_repos/dump_editor.c

(normalize_props): Adjust call to svn_repos__normalize_prop(), explicitly

duplicate the property value into the result pool.

* subversion/svnrdump/load_editor.c

(set_revision_property, set_node_property): Explicitly duplicate the property

values into the long-living pool.

* subversion/svnrdump/util.c

(svn_rdump__normalize_props): Adjust call to svn_repos__normalize_prop(),

explicitly duplicate the property value into the result pool.

  1. … 3 more files in changeset.
Normalize line endings in node properties (such as svn:ignore) when loading

dumps with `svnadmin load --normalize-props`.

Previously, this command would only normalize revision properties, but

do nothing for node properties.

The problem has been reported by a user in the following thread:

https://lists.apache.org/thread.html/86a018501fde594b4ebf4080143bcb9562b0482d794206e27de86836@%3Cusers.subversion.apache.org%3E

* subversion/libsvn_repos/load-fs-vtable.c

(change_node_prop): Accept the new `normalize_props` argument, call

svn_repos__normalize_prop() for the property if it is set.

(set_node_property, delete_node_property, remove_node_props):

Update calling sites of the change_node_prop() function, pass the

stored `normalize_props` state of the parser.

* subversion/tests/cmdline/svnadmin_tests.py

(load_normalize_node_props): New regression test.

(test_list): Add new test.

  1. … 1 more file in changeset.
* subversion/libsvn_repos/load-fs-vtable.c

(change_rev_prop): Document the `normalize_props` argument.

No functional changes.

Update wiki links to point to the new(ish) Confluence Wiki.
  1. … 4 more files in changeset.
Make the dump stream parser more resilient to malformed dump streams that

do not contain \n characters at all.

Previously, we'd attempt to load the whole input into memory due to how

svn_stream_readline() is currently implemented. Doing so could potentially

choke for large files. The corresponding real-world case is where a user

(accidentally) attempts to load a huge binary file that does not contain \n

characters as the repository dump.

This is the potential cause of the OOM reported in

https://lists.apache.org/thread.html/c96eb5618ac0bf6e083345e0fdcdcf834e30913f26eabe6ada7bab62@%3Cusers.subversion.apache.org%3E

* subversion/libsvn_repos/load.c

(parse_format_version): Read the dump version string directly from

stream, with an upper limit of 80 bytes. Comment on why we don't use

svn_stream_readline() for this particular case.

(svn_repos_parse_dumpstream3): Update the call to parse_format_version().

Use more of the new _safe variants of canonicalization functions.

This commit converts all relevant function calls in libsvn_repos.

* subversion/libsvn_repos/commit.c

(add_file_or_directory, delete_entry, open_directory, open_file): Use

svn_relpath_canonicalize_safe() instead of svn_relpath_canonicalize().

* subversion/libsvn_repos/delta.c

(svn_repos_dir_delta2): Use svn_relpath_canonicalize_safe() instead of

svn_relpath_canonicalize().

* subversion/libsvn_repos/dump.c

(make_dir_baton): Convert to return an svn_error_t and use

svn_relpath_canonicalize_safe() instead of svn_relpath_canonicalize().

(open_root, add_directory, open_directory): Update callers.

(dump_node): Use svn_relpath_canonicalize_safe() instead of

svn_relpath_canonicalize().

* subversion/libsvn_repos/dump_editor.c

(make_dir_baton): Convert to return an svn_error_t and use

svn_relpath_canonicalize_safe() instead of svn_relpath_canonicalize().

(open_root, add_directory, open_directory): Update callers.

* subversion/libsvn_repos/load-fs-vtable.c

(prefix_mergeinfo_paths, make_node_baton, svn_repos_get_fs_build_parser6):

Use svn_relpath_canonicalize_safe() instead of svn_relpath_canonicalize().

Fix #4760 "Missing children when svnadmin dump --include/exclude converts

copy-dir to add-dir".

Follow-up to r1811992: Canonicalize PATH before passing it to the FILTER_FUNC.

In some cases (e.g. for nodes under copied directories) PATH passed by

repos layer to AUTHZ_FUNC may be non-canonical (missing leading '/'). This

causes FILTER_FUNC implemented in svnadmin to wrongly report PATH as "not

included".

* subversion/libsvn_repos/dump.c

(dump_filter_authz_func): Canonicalize PATH before passing it

to the FILTER_FUNC. Add comment.

* subversion/tests/cmdline/svnadmin_tests.py

(dump_include_copied_directory): New.

(test_list): Add new test to table.

Patch by: sergey.raevskiy{_AT_}visualsvn.com

  1. … 1 more file in changeset.
Upgrade uses of the editor path driver callback, following r1852526.

* subversion/libsvn_client/add.c

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(mkdir_urls): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_client/commit_util.c

(item_commit_baton): Remove the editor and edit-baton from here.

(do_item_commit): Take the editor and edit-baton as direct parameters.

(svn_client__do_commit): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_client/copy.c

(path_driver_cb_baton): Remove the editor and edit-baton from here.

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(repos_to_repos_copy): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_delta/branch_compat.c

(apply_change): Take the editor and edit-baton as direct parameters.

(drive_changes): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_delta/compat.c

(apply_change): Take the editor and edit-baton as direct parameters.

(drive_changes): Upgrade to svn_delta_path_driver3.

* subversion/libsvn_repos/replay.c

(path_driver_cb_baton): Remove the editor and edit-baton from here.

(path_driver_cb_func): Take the editor and edit-baton as direct parameters.

(svn_repos_replay2): Upgrade to svn_delta_path_driver3.

  1. … 5 more files in changeset.
Introduce a warning callback to the authz file parser API.

We need this to warn about the use of empty groups in authz files;

this is not an error and doesn't affect the authz file semantics,

but it's nice to be able to tell the user about it.

See issues #4794, #4802 and #4803.

* subversion/include/svn_repos.h

(svn_repos_authz_warning_func_t): New callback function type.

(svn_repos_authz_read4): New; API revision.

(svn_repos_authz_read3): Deprecated.

(svn_repos_authz_parse2): New; API revision.

(svn_repos_authz_parse): Deprecated.

* subversion/libsvn_repos/authz.h

(svn_authz__parse): Add warning function and baton parameters.

* subversion/libsvn_repos/authz.c

(authz_read): Add warning function and baton parameters.

Update calls to svn_authz__parse.

(svn_repos_authz_read4): Revised from svn_repos_authz_read3.

(svn_repos_authz_parse2): Revised from svn_repos_authz_parse.

* subversion/libsvn_repos/authz_parse.c

(struct ctor_baton_t): Add members warning_func and warning_baton.

(create_ctor_baton): Initialise these new members of the constructor baton.

(emit_parser_warning): New.

(SVN_AUTHZ_PARSE_WARN): New; wrapper macro for the above.

(array_insert_ace): Ignore and warn about the use of empty groups.

(svn_authz__parse): Update implementation to match prototype.

* subversion/libsvn_repos/deprecated.c

(svn_repos_authz_read3, svn_repos_authz_parse): Implement deprecated functions.

* subversion/mod_authz_svn/mod_authz_svn.c

(log_svn_message): New; replaces log_svn_error so that it's useful for

logging warnings as well.

(log_svn_error): Reimplement, calling log_svn_message.

(struct authz_warning_baton_t): New.

(log_authz_warning): New.

(get_access_conf): Set up an authz warning handler and baton, and call

svn_repos_authz_read4 instead of svn_repos_authz_read3.

* subversion/svnserve/logger.h

(logger__log_error): Make the 'err' parameter a pointer-to-const.

Update the docstring to say that the error is not cleared.

(logger__log_warning): New.

* subversion/svnserve/logger.c

(log_message): New; common base for logger__log_error and logger__log_message.

Also *do not* allocate 8k on the stack, use the logger pool, which gets

cleared at the end of the function.

(logger__log_error): Reimplement.

(logger__log_warning): Implement.

* subversion/svnserve/serve.c

(log_error): Make the error parameter const. Fix the docstring.

(log_warning): New.

(load_authz_config): Add warning function and baton parameters and fix pool

handling. Now calls svn_repos_authz_read4 instead of svn_repos_authz_read3.

(find_repos): Add warning function and baton parameters for load_authz_config.

(handle_authz_warning): New.

(construct_server_baton): Pass an authz warning handler and baton to find_repos.

* subversion/tests/cmdline/authz_tests.py

(group_member_empty_string): Fix docstring.

(empty_group): New test case.

(test_list): Run it.

* subversion/tests/cmdline/svnauthz_tests.py

(svnauthz_empty_group_test): Extend the @Issues decorator.

Add a check for the expected warning on stderr.

  1. … 9 more files in changeset.
Fix a bug in the authz parser where using a group with no members in

an access entry was treated as an error instead of being ignored.

* subversion/libsvn_repos/authz_parse.c

(add_to_group): Allow NULL user, to create empty groups. Update docstring.

(expand_group_callback): Handle the case where a group has no users.

(array_insert_ace): Ignore ACEs for empty groups.

* subversion/tests/cmdline/svnauthz_tests.py

(svnauthz_empty_group_test): Remove XFail decorator.

Extend the testcase to test recursive empty group expansion.

Fixes issue #4802

Found by: Doug Robinson

  1. … 1 more file in changeset.
* subversion/libsvn_repos/authz.h (authz_acl_t):

Fix comment as in r1847924 for authz_full_t.

* subversion/libsvn_repos/authz.h (authz_full_t):

Fix comment: all selectors can be inverted, not just groups and aliases.

Propagate knowledge about inverted access rule selectors (e.g., ~user,

~@group, ~&alias) to the global level of the parsed authz file structure

and take that information into account during access resolution.

* subversion/libsvn_repos/authz.h

(authz_full_t): Add members has_neg_rights and neg_rights.

(authz_acl_t): Add members has_neg_access and neg_access.

* subversion/libsvn_repos/authz_parse.c

(neg_access_token): "User name" for the global inverted access rights.

(insert_default_acl): Initialize neg_access and has_neg_access.

(create_ctor_baton): Initialize the inverted global rights.

(rules_open_section): Initialize the ALC's inverted access.

(add_access_entry): Record the inverted rights.

(expand_acl_callback): Propagate the inverted rights to global scope.

* subversion/libsvn_repos/authz_info.c

(svn_authz__get_global_rights): When the user is authenticated but

does not have an explicit entry in the authz file, use the available global

inverted rights to resolve the user's access.

* subversion/tests/cmdline/authz_tests.py

(inverted_group_membership): Remove XFail decorator.

Delete the reference to the mail archives, it's in the issue tracker.

* subversion/tests/cmdline/svnauthz_tests.py

(svnauthz_inverted_selector_test): New test case.

Fixes: SVN-4793

Suggested by: Pavel Goran <inbox-17{_AT_}pvgoran.name>

  1. … 2 more files in changeset.
Let 'svnrdump' read/write a file instead of stdin/stdout.

svnadmin dump/load already has this option. svnrdump already had some

plumbing for it.

* subversion/libsvn_repos/dump_editor.c

(close_file): Avoid closing the output stream at this point.

* subversion/svnrdump/svnrdump.c

(svnrdump__cmd_table,

svnrdump__options): Enable and document the '--file'/'-F' option.

(replay_revisions,

load_revisions): Close the output stream, when finished.

* subversion/tests/cmdline/svnrdump_tests.py

(run_and_verify_svnrdump_dump,

run_and_verify_svnrdump_load): When a dumpfile is specified, pass it to

svnrdump's '--file' option instead of using stdin/stdout.

(dont_drop_valid_mergeinfo_during_incremental_svnrdump_loads): Remove an

unused return value variable.

  1. … 2 more files in changeset.
Factor out the dump-stream header writing functions.

Although these are small functions, consistency is nice.

* subversion/include/private/svn_repos_private.h,

subversion/libsvn_repos/dump.c

(svn_repos__dump_magic_header_record,

svn_repos__dump_uuid_header_record): New.

(svn_repos_dump_fs4): Use them.

* subversion/svndumpfilter/svndumpfilter.c

(magic_header_record,

uuid_record): Use them.

* subversion/svnrdump/svnrdump.c

(replay_revisions): Use them.

  1. … 3 more files in changeset.
Remove accidentally committed .svnpatch.reject files.
Introduce a small separation of concerns in svnrdump's dumpstream loader.

* subversion/svnrdump/svnrdump.h,

subversion/svnrdump/load_editor.c

(get_dumpstream_loader): New, separated out...

(svn_rdump__load_dumpstream): ... from here. Improve doc string.

  1. … 2 more files in changeset.
Move the 'svnrdump' dump editor implementation to libsvn_repos.

This brings it alongside the dump editor implementation used by 'svnadmin

dump', as a step towards unifying the two implementations.

* subversion/include/private/svn_repos_private.h

(svn_repos__get_dump_editor): New declaration.

* subversion/libsvn_repos/dump_editor.c

New file, copied from subversion/svnrdump/dump_editor.c.

Move the dump editor to here...

* subversion/svnrdump/dump_editor.c

... from here, leaving behind just the two wrappers (cancellation and Ev2

shims).

  1. … 2 more files in changeset.
Fix issue SVN-4767: svnadmin dump shouldn't canonicalize svn:date.

* subversion/libsvn_repos/dump.c

(write_revision_record): Don't canonicalize svn:date.

* subversion/tests/cmdline/svnadmin_tests.py

(dump_no_canonicalize_svndate): New test.

(test_list): Run it.

  1. … 1 more file in changeset.
Fix issue 4741: authz group cannot refer to multiple groups.

Reported by: 黄磊 <raymond.huang{_AT_}musjoy.com>

* subversion/libsvn_repos/authz_parse.c

(expand_group_callback): Do not overwrite variable when recursing.

Fix pattern-matching of the top level path in a listing with search.

svn list -v PATH --search=PATTERN

The output for the top level PATH will now be included when a

PATTERN matches the last component of its path-within-repository,

or the empty string for the repository root path. This is consistent with

matching all other paths in the listing.

Until now, and since the feature was introduced in r1767186, the top

level path was reported only when a pattern matched the entire

path-within-repository, starting with "/", of PATH's *parent* directory.

For example,

svn ls -v ^/subversion/trunk/README --search=PATTERN

reported the top-level path only if PATTERN matched

"/subversion/trunk".

Note that "-v" is specified in these examples because otherwise "svn"

omits the top-level path when it is a directory.

* subversion/libsvn_client/list.c

(list_internal): Match the basename, not the dirname, of the top level

path.

* subversion/libsvn_repos/list.c

(svn_repos_list): Same.

* subversion/tests/cmdline/basic_tests.py

(filtered_ls): Extend to test both server- and client-side code paths.

(filtered_ls_top_level_path): New test.

(test_list): Run it.

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

(test_list): Expect the top level path also to match.

  1. … 3 more files in changeset.
Update issue tracker links in comments, from Tigris (issuezilla) to Apache (Jira).

URL fragment identifiers like '#desc5' are left in place, not yet updated.

This is a merge of r1828508 from the 'shelve-checkpoint' branch where I

committed it by mistake.

  1. … 42 more files in changeset.
* subversion/libsvn_repos/repos.c

(freeze_baton_t): Add 'const' to the paths array. A follow-up to r1826802.

Add "const" to an "apr_array_header_t *" input parameter.

This is the only case in the whole API where it was missing.

(Note that we are allowed to add "const" to a pointer parameter of a public

API, and have done so before e.g. in r922239, because that is a backward-

compatible API change and doesn't change the ABI at all.)

* subversion/include/svn_repos.h

subversion/libsvn_repos/repos.c

(svn_repos_freeze): Add 'const' to the paths array parameter.

  1. … 1 more file in changeset.
Fix inconsistent handling of svn_dirent_t.size for directories.

Most code uses SVN_INVALID_FILESIZE for them, so change the docs to match

that fact and update all users to consistently follow the new docstring.

* subversion/include/svn_types.h

(svn_dirent_t): Change documentation for SIZE.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_dir): Return the new default for directories.

* subversion/libsvn_ra_serf/list.c

(item_closed): Be sure to default to SVN_INVALID_FILESIZE.

* subversion/libsvn_repos/list.c

(fill_dirent): Set SIZE consistently with other RA layers.

  1. … 3 more files in changeset.
Fix svn_repos_stat() implemention for directories to match the svn_dirent_t

docstring.

* subversion/libsvn_repos/list.c

(fill_dirent): Make sure SIZE is 0 for directories.