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_dirent_receiver_t, 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.
Don't leave *conflict_p uninitialized if svn_repos_fs_commit_txn() fails before calling the FS layer.
This function gives the same promises as svn_fs_commit_txn(), which always sets the conflict variable to either NULL, or to a valid conflict string. Make sure that we fulfil this contract even if the commit preparation fails — e.g., when calling pre-commit hook or removing ephemeral txnprops.
* subversion/libsvn_repos/fs-wrap.c (svn_repos_fs_commit_txn): Start from setting *conflict_p to NULL.
* subversion/tests/libsvn_repos/repos-test.c (commit_aborted_txn, test_funcs): Add a test for this behavior.