Fix issue #1809: Replace svn_client_ls and make recursive ls streamy. Make it possible to determine if the target of an svn_client_list is a file or directory by always including the listed target dirent in the result.
* subversion/include/svn_types.h (svn_dirent_t): Add note about extending the struct. (svn_dirent_dup): New function.
* subversion/include/svn_client.h (svn_client_list_func_t): New typedef. (svn_client_list): Rename from svn_client_ls4 and change the arguments to use a callback instead of putting everything in hash tables. (svn_client_ls3): Expand docstring.
* subversion/libsvn_subr/constructors.c (svn_dirent_dup): New function.
* subversion/libsvn_client/list.c: Rename from ls.c. (get_dir_contents): Call callback instead of putting things in hashes. Add docstring. (svn_client_list): Rename from svn_client_ls4 and use callback instead of hashes. Report the dirent for the target of the operation for both files and directories. (ls_baton, store_dirent): New. (svn_client_ls3): Rewrite in terms of svn_client_list.
* subversion/svn/cl.h (svn_cl__list): Rename from svn_cl__ls.
* subversion/svn/list-cmd.c: Rename from ls-cmd.c. (print_baton): New struct. (print_dirent): Rename from print_dirents, implement svn_client_list_func_t. Print one dirent. (print_dirent_xml): Rename from print_dirents_xml, implement svn_client_list_func_t. Remove useless comments. Print one dirent. (svn_cl__list): Rename from svn_cl__ls; caller updated. Use new svn_client_list. Print XML element list here if in XML mode. Refactor two nested if statements into one.
Partial fix for Issue #443: post-commit hook script (error) output lost This is step 6 : Pass the post-commit error from the server to the client over all three protocols.
Patch by: Madan U Sreenivasan <email@example.com>
* subversion/libsvn_subr/constructors.c (svn_commit_info_dup): Modified to copy the post_commit_err member.
* subversion/mod_dav_svn/merge.c (global): included svn_xml.h. (dav_svn__merge_response): Modified to use the new post-commit error message parameter.
* subversion/mod_dav_svn/dav_svn.h (dav_svn__merge_response): Add new parameter - post_commit_err.
* subversion/mod_dav_svn/version.c (dav_svn_merge): Modified to extract the post-commit error message.
* subversion/clients/cmdline/util.c (svn_cl__print_commit_info): At last, we can print out the post-commit error messages! yoohoo!
* subversion/tests/clients/cmdline/commit_tests.py (post_commit_hook_test): New function to test post-commit hook's error output. (test_list): Added post_commit_hook_test to list of tests.
* subversion/libsvn_repos/hooks.c (svn_repos__hooks_post_commit): Pass TRUE for the read_errstream parameter of run_hook_cmd.
* subversion/libsvn_repos/commit.c (close_edit): Fill the post_commit_err parameter if the child error message has one.
* subversion/libsvn_ra_svn/client.c (ra_svn_end_commit): Modified to read the extra post-commit error message sent out by the server.
* subversion/libsvn_ra_svn/protocol (commit_info): Added the optional parameter for post-commit error.
* subversion/libsvn_ra_dav/merge.c (merge_elements): Added new member for post-commit error processing. (merge_ctx_t): Added new member for post-commit error. (validate_element): Added test for the ELEM_post_commit_err. (end_element): Added post-commit error handling. (svn_ra_dav__merge_activity): Added the post_commit_err parameter and its handling.
* subversion/libsvn_ra_dav/ra_dav.h (enum): Added a new member ELEM_post_commit_err. (svn_ra_dav__merge_activity): Added new parameter for post-commit error message.
* subversion/libsvn_ra_dav/commit.c (commit_close_edit): Modified call to svn_ra_dav__merge_activity to pass the post-commit error message.
* subversion/svnserve/serve.c (commit_callback_baton_t): Add a new member to hold the post-commit error message. (commit_done): Modified to copy the over the post-commit error message to the callback baton. (commit): Write out the tuple with the post-commit error message.