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

Changeset 1767150 is being indexed.

Make the new svn_repos_list easier to use with typical client requests.

Instead of a single pattern, accept an array of alternative patterns of

which at least one must match if any patterns are given. Sort the output

by path to make it match the client-side implementation's output order.

* subversion/include/svn_repos.h

(svn_repos_list): We now support multiple glob patterns and sort the


* subversion/libsvn_repos/list.c

(matches_any): New utility function for matching against an array

instead of a single pattern.

(report_dirent): For efficiency reasons, we now filter early before

calling this reporter function.


compare_filtered_dirent): New filtering and sorting support.

(do_list): Support multiple PATTERNS. Filter and sort the data before

processing it further.

(svn_repos_list): Update signature, filtering and passing of parameters.

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

(test_list): Adapt test case to interface change.

  1. … 2 more files in changeset.
Fix a copy-n-pasto in the new svn_repos_list code.

Found by: danielsh

* subversion/libsvn_repos/list.c

(svn_repos_list): The DEPTH parameter is relevant for the top-level dir.

Introduce a "directory list" operation at the repos layer. This is the

first step towards an efficient implementation of 'svn list -r'.

The function is straight-forward with support for operation depth and

authz. One important use-case is "find files". To support this with

minimal system load, the function allows to specify a glob pattern for

the file name and has an option to only report path and node type.

* subversion/include/svn_repos.h


svn_repos_list): The new API.

* subversion/libsvn_repos/list.c

(*): New file implementing the new API. Noteworthy:

(fill_dirent): Factored out from ...

(svn_repos_stat): ... this, which has been moved here from repos.c

* subversion/libsvn_repos/repos.c

(svn_repos_stat): Move from here to list.c due to shared code.

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

(test_list): Simple test-case for the new function.

(test_funcs): Register new test.

  1. … 3 more files in changeset.