Allow 'svn cleanup' to remove unversioned items from the working copy. This should address the feature request from issue #3549.
Add two new options to 'svn cleanup', --remove-unversioned and --no-ignore. The former causes unversioned files and directories to be removed after successful cleanup. The latter causes ignored items to be removed as well.
One remaining question is what to do with externals. Right now, 'svn cleanup' never recurses into externals. Should it recurse into externals if the --remove-unversioned option is given? Should we change it to always recurse into externals by default? I'm not quite sure.
* subversion/libsvn_client/cleanup.c (remove_unversioned_items): New helper function. (svn_client_cleanup2): Implement as an extension of svn_client_cleanup(), which can optionally remove unversioned items after all other cleanup actions, via a status walk.
* subversion/libsvn_client/deprecated.c (svn_client_cleanup): Implement as a wrapper around svn_client_cleanup2().
* subversion/svn/cl.h (svn_cl__opt_state_t): Add new 'remove_unversioned' option.
* subversion/svn/cleanup-cmd.c (svn_cl__cleanup): Run svn_client_cleanup2() to support removal of unversioned items. Reject --no-ignore option without --remove-unversioned.
* subversion/svn/svn.c (svn_cl__longopt_t): Add opt_remove_unversioned. (svn_cl__options): Add --remove-unversioned option. (svn_cl__cmd_table): Extend help text of 'svn cleanup'. (sub_main): Handle --remove-unversioned option.
* subversion/tests/cmdline/wc_tests.py (cleanup_unversioned_items, test_list): New test.