Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1769485 is being indexed.

Change the svn_*_list APIs to use NULL as the "don't filter by pattern"

parameter instead of an empty pattern list.

Suggested by: Patrick Steinhardt (patrick.steinhardt at

* subversion/include/svn_repos.h

(svn_repos_list): Document the new PATTERN options behavior.

* subversion/libsvn_repos/list.c

(matches_any): Implement the new behavior.

(svn_repos_list): Empty lists will almost always be created by dumb

scripts. It's probably a good idea to explicitly

not waste any resources in the degenerate case.

* subversion/include/svn_ra.h

(svn_ra_list): Document the new PATTERN options behavior.

* subversion/libsvn_ra_svn/protocol

(3.1.1. Main Command Set): The patterns list in the list command is

now optional.

* subversion/libsvn_subr/log.c

(svn_log__list): Make the logging cope with NULL pattern lists.

* subversion/svnserve/serve.c

(list): Receive NULL for PATTERNS, if no list was received.

* subversion/libsvn_ra_svn/client.c

(ra_svn_list): Omit the pattern list entirely, if patterns is NULL.

* subversion/include/svn_client.h

(svn_client_list4): Document the new PATTERN options behavior.

(svn_client_list3): Update docstring.

* subversion/libsvn_client/deprecated.c

(svn_client_list3): Update implementation.

* subversion/libsvn_client/list.c

(match_patterns): Implement the new behavior.

(list_internal): Update docstring.

* subversion/svn/list-cmd.c

(svn_cl__list): If no patterns were specified, pass NULL to the API.

* subversion/svnbench/null-list-cmd.c

(svn_cl__null_list): Same.

'svn info --show-item': Don't print trailing whitespace after revision

numbers that comprise 8 digits or less.

* subversion/svn/info-cmd.c

(print_info_item_revision): As above.

* subversion/tests/cmdline/

(info_item_simple): Change the expectation from unanchored regexp

match to string equality, to catch the above bug.

Remove two hacks from the conflict resolver API that were added to

allow handling --accept=mine-conflict | working for tree conflicts

and --accept=working for binary text conflicts.

This patch makes the command-line client fully responsible for choosing

the appropriate conflict option id, and keeps the various new APIs

such as svn_client_conflict_text_resolve_by_id() simple and doing

just what they were told to do.

Discussed in

* subversion/libsvn_client/conflicts.c


svn_client_conflict_tree_resolve_by_id): Remove hacks from these


* subversion/svn/conflict-callbacks.c

(resolve_conflict_by_accept_option): Inline parts of this function that

handle svn_cl__accept_edit and svn_cl__accept_launch ...

(svn_cl__resolve_conflict): Accept svn_cl__accept_t by value,

drop the option id argument. Pick the appropriate option id based on

the passed-in svn_cl__accept_t argument. Prompt the user if there is

no option or if the option did not apply.

* subversion/svn/resolve-cmd.c

(svn_cl__resolve): Handle unsupported --accept [--non-interactive] cases

in this function.

(svn_cl__walk_conflicts): Remove the is_resolve_cmd argument. Don't

map the --accept option to option id here, as we will do it in the

svn_cl__resolve_conflict() function. Adjust calls to walk_conflicts()

and svn_cl__resolve_conflict().

(walk_conflicts): Remove option_id argument, accept svn_cl__accept_t

by value.

(conflict_status_walker): Adjust call to svn_cl__resolve_conflict().

(conflict_status_walker_baton): Remove option_id field, store

accept_which field by value.

* subversion/svn/merge-cmd.c

(svn_cl__merge): Adjust call to svn_cl__walk_conflicts().

* subversion/svn/switch-cmd.c

(svn_cl__switch): Adjust call to svn_cl__walk_conflicts().

* subversion/svn/update-cmd.c

(svn_cl__update): Adjust call to svn_cl__walk_conflicts().

* subversion/svn/cl.h

(svn_cl__resolve_conflict, svn_cl__walk_conflicts): Update declarations.

Following up on r1764902: Correct indentation.

* subversion/libsvn_client/conflicts.c

(svn_client_conflict_text_resolve_by_id): As above.

Found by: kotkov

Approved by: stsp

* STATUS: Nominate r1769152.

* subversion/svnserve/serve.c

(find_repos): Call svn_repos_hooks_setenv() like mod_dav_svn and ra_local do.

Otherwise the hook env feature remains disabled.

Reported by: Steven Simpson via users@

Use the correct error code to signal that a server does not implement


* subversion/include/svn_ra.h

(svn_ra_list): Explicitly document the error code that can be expected.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_list): Return "feature not supported" instead of "entire protocol

scheme not supported".

* subversion/libsvn_client/list.c

(list_internal): We now only need to test for one error condition.

Found by: danielsh

Get rid of the separate as most of it has been already

covered by our (using the alias 'ls' for 'list').

* subversion/tests/cmdline/

(filtered_ls): The list_filtered test carried over from

(test_list): Register new test.

* subversion/tests/cmdline/

(): Remove file.

Change the ra_svn protocol for the list command response.

Make all dirent fields optional and have the dirent-fields flags control

which ones to transmit.

* subversion/libsvn_ra_svn/protocol

(3.1.1. Main Command Set): Replace the sub-struct with a list of

optional fields for the 'list' command.

Also document the optional nature of the

'kind' field and that the dirent-field is


* subversion/include/private/svn_ra_svn_private.h

(svn_ra_svn__write_dirent): Declare new serialization utility.

* subversion/libsvn_ra_svn/marshal.c

(svn_ra_svn__write_dirent): Implement.

* subversion/svnserve/serve.c

(list_receiver_baton_t): Pass on the dirent-fields instead of a simple

flag such that we can send exactly what the

client asked for.

(list_receiver): Call the new serialization utility.

(list): Update caller to baton change.

* subversion/libsvn_ra_svn/client.c

(ra_svn_list): Update the format string to reflect the protocol change.

Suggested by: danielsh

* subversion/include/private/svn_ra_svn_private.h

(svn_ra_svn__write_tuple): Update function names in code example.

No functional change.

Follow-up to r1767194:

* subversion/include/private/svn_ra_svn_private.h

(svn_ra_svn__parse_tuple): Update docstring to match the implementation.

No functional change.

Found by: danielsh

* subversion/libsvn_ra_svn/protocol

(3.1.1. Main Command Set): Fix typo.

Found by: danielsh

* COMMITTERS: Move myself to dormant section since I'm no longer member of

Subversion PMC.

Merge r1767768 from trunk:

* r1767768

Fix for "Perl bindings corrupt "{DATE}" revision variable"


User reported problem. Simple fix.


+1: rschupp

+0: danielsh, rhuijben

Merge r1767768 from trunk:

* r1767768

Fix for "Perl bindings corrupt "{DATE}" revision variable"


User reported problem. Simple fix.


+1: rschupp

+0: danielsh, rhuijben

* STATUS: Cast two +0 votes. Move perl fixed to approved via binding rules.
* STATUS: Cast +0 vote and move from vetoed (why?) to approved.
* STATUS: Nomniate r1767768
* STATUS: Nomniate r1767768
* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c:

(svn_swig_pl_set_revision) When parsing a revision given as "{DATE}",

restore the closing brace afterwards. Modify error messages to

include the originally passed-in string.

Patch by: Rainer Müller <>

Uppercase client-specific resolve option labels.

* subversion/svn/conflict-callbacks.c:




extra_resolver_options_tree): upper-case labels.

Patch by: Patrick Steinhardt <>

Fix 'svn ls' with authz broken by the introduction of svn_repos_list.

* subversion/libsvn_repos/list.c

(do_list): Actually check against the current path instead of the base.

Add '--search' option support to 'svnbench null-list'.

This replicates features already implemented for 'svn list'.

* subversion/svnbench/cl.h

(svn_cl__opt_state_t): Copy SEARCH_PATTERNS from the standard CL client.

* subversion/svnbench/null-list-cmd.c

(svn_cl__null_list): Process the search patterns just like in 'svn'.

* subversion/svnbench/svnbench.c





sub_main): Replicate svn's '--search' option.

Implement svn_ra_list in ra_svn. The wire protocol for this command

has been insprired by the get-log and get-dir commands alike.

* subversion/libsvn_ra_svn/protocol

(2.1 Capabilities): Add the 'list' capability.

(3.1.1. Main Command Set): Add the protocol of the 'list' command.

* subversion/include/svn_ra_svn.h

(SVN_RA_CAPABILITY_LIST): Declare this new capability in code.

* subversion/svnserve/serve.c



list): Implement the new command.

(main_commands): Register the new command handler.

(construct_server_baton): Advertise the new capability.

* subversion/libsvn_ra_svn/client.c

(ra_svn_has_capability): Check for the new capability as well.

(ra_svn_list): Client-side implementation of the protocol.

(ra_svn_vtable): Register the new list function.

* subversion/include/private/svn_log.h

(svn_log__list): Add a new internal API to allow for logging the

new list command.

* subversion/libsvn_subr/log.c

(svn_log__list): Implement.

Make ra_local tests pass again:

Handle edge and error cases for list the same as in the client-only code.

* subversion/libsvn_repos/list.c

(svn_repos_list): Allow 'list' for file nodes and use the same error

code for nodes that are neither file nor directory.


Split a couple of functions to reduce the size of upcomming commits.

* subversion/libsvn_ra_svn/client.c

(send_dirent_fields): Extract this function from ...

(ra_svn_get_dir): ... this one.

* subversion/svnserve/serve.c

(parse_dirent_fields): Extract this function from ...

(get_dir): ... this one.

Close a gap in the ra_svn protocol engine:

Boolean elements in conditional tuples were not supported but would also not

occur in the protocol definition. They will in the future, though.

* subversion/libsvn_ra_svn/marshal.c

(vparse_tuple): Handle simple booleans in missing optional parts as well.

Implement svn_ra_list in ra_local.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__has_capability): ra_local new supports the list function.



svn_ra_local__list): New functions implementing the list API by trivially

adapting between RA- and repos-layer.

(ra_local_vtable): Activate the LIST function in the vtable.

Add a RA-level function for svn_repos_list and use that to implement

svn_client_list, if the server should support the new API.

Right now, no RA layer actually implements the new API; this will be

done in follow-up commits.

* subversion/include/svn_ra.h


svn_ra_list): Declare the new interface.

(SVN_RA_CAPABILITY_LIST): Declare a new server capability.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add LIST function.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_list): Implement the new API and check for its availability.

* subversion/libsvn_client/list.c


list_receiver): RA-layer-compatible wrapper around the client callback.

(list_internal): If we don't have to fetch any properties, use the new

RA-layer API, if available. Explicitly checking the

existance of the base path is only needed if we use

the client-side code.

* subversion/libsvn_ra_local/ra_plugin.c

(ra_local_vtable): Update vtable.

* subversion/libsvn_ra_serf/serf.c

(serf_vtable): Same.

* subversion/libsvn_ra_svn/client.c

(ra_svn_vtable): Same.

* subversion/include/svn_client.h

(svn_client_list2): Fix ordering of @since and @deprecated.

No functional change.