This commit solves on problem exposed by the new test case in r31764. We cannot report excluded branch to server when depth_is_sticky, otherwise the server will not send contents of that path and we will be in trouble. Moreover, we have to report delete_path() on it(when !report_everything), to ensure that the server will send us full content.
* subversion/include/svn_wc.h, subversion/libsvn_wc/adm_crawler.c (svn_wc_crawl_revision4): New API, with new parameter honor_depth_exclude. (svn_wc_crawl_revision3): Deprecated.
* subversion/libsvn_client/switch.c (svn_client__switch_internal): * subversion/libsvn_client/status.c (svn_client_status3): * subversion/libsvn_client/diff.c (diff_repos_wc): * subversion/libsvn_client/update.c (svn_client__update_internal): Adjust all callers of the deprecated API.
Make 'svn update' honor the svn_depth_exclude flag. It works for clean wc now. And all existing test suites remained working. However, the crawler has not been updated yet. So filtering modification in the excluded branch will not work now.
The svn_wc_entry() and svn_wc_entries_read() now filter out excluded item when show_hidden is FALSE.
* subversion/include/svn_wc.h (svn_wc_entry, svn_wc_entries_read, svn_wc_walk_entries3): Document the new filter behavior.