Index: subversion/libsvn_wc/lock.c =================================================================== --- subversion/libsvn_wc/lock.c (revision 15538) +++ subversion/libsvn_wc/lock.c (working copy) @@ -811,6 +811,7 @@ apr_pool_t *pool) { const char *base_name = svn_path_basename (path, pool); + svn_error_t *err_ret = SVN_NO_ERROR; if (svn_path_is_empty (path) || ! strcmp (path, "/") || ! strcmp (base_name, "..")) @@ -945,6 +946,25 @@ apr_hash_set (p_access->set, apr_pstrdup (p_access->pool, path), APR_HASH_KEY_STRING, &missing); } + if (!t_entry) + { + svn_node_kind_t kind; + if (p_access) + svn_error_clear (do_close (p_access, FALSE)); + + SVN_ERR (svn_io_check_path (path, &kind, pool)); + if (kind == svn_node_none) + err_ret = svn_error_createf (SVN_ERR_WC_PATH_NOT_FOUND, 0, + "%s: Can't find a working copy path", + svn_path_local_style (path, pool)); + else if (kind == svn_node_dir || kind == svn_node_file) + err_ret = svn_error_createf (SVN_ERR_UNVERSIONED_RESOURCE, 0, + "%s: an unversioned resource", + svn_path_local_style (path, pool)); + else + err_ret = SVN_NO_ERROR; + + } } *anchor_access = p_access ? p_access : t_access; @@ -956,7 +976,7 @@ *target = base_name; } - return SVN_NO_ERROR; + return err_ret; } Index: subversion/libsvn_client/delete.c =================================================================== --- subversion/libsvn_client/delete.c (revision 15538) +++ subversion/libsvn_client/delete.c (working copy) @@ -268,11 +268,16 @@ SVN_ERR (svn_wc_adm_open3 (&adm_access, NULL, parent_path, TRUE, 0, ctx->cancel_func, ctx->cancel_baton, subpool)); - SVN_ERR (svn_client__wc_delete (path, adm_access, force, - FALSE, - ctx->notify_func2, - ctx->notify_baton2, - ctx, subpool)); + + SVN_ERR (svn_cl__try (svn_client__wc_delete (path, adm_access, force, + FALSE, ctx->notify_func2, + ctx->notify_baton2, + ctx, subpool), + NULL, opt_state->quiet, + SVN_ERR_UNVERSIONED_RESOURCE, + SVN_ERR_ENTRY_NOT_FOUND, + SVN_ERR_WC_UNSUPPORTED_FORMAT, + SVN_NO_ERROR)); SVN_ERR (svn_wc_adm_close (adm_access)); } svn_pool_destroy (subpool); Index: subversion/libsvn_client/status.c =================================================================== --- subversion/libsvn_client/status.c (revision 15538) +++ subversion/libsvn_client/status.c (working copy) @@ -213,15 +213,22 @@ const svn_wc_entry_t *entry; struct status_baton sb; svn_revnum_t edit_revision = SVN_INVALID_REVNUM; + svn_error_t *err; sb.real_status_func = status_func; sb.real_status_baton = status_baton; sb.deleted_in_repos = FALSE; - SVN_ERR (svn_wc_adm_open_anchor (&anchor_access, &target_access, &target, - path, FALSE, recurse ? -1 : 1, - ctx->cancel_func, ctx->cancel_baton, - pool)); + err = svn_wc_adm_open_anchor (&anchor_access, &target_access, &target, + path, FALSE, recurse ? -1 : 1, + ctx->cancel_func, ctx->cancel_baton, + pool); + + if (err && err->apr_err != SVN_ERR_UNVERSIONED_RESOURCE) + return err; + else + svn_error_clear (err); + anchor = svn_wc_adm_access_path (anchor_access); /* Get the status edit, and use our wrapping status function/baton Index: subversion/clients/cmdline/update-cmd.c =================================================================== --- subversion/clients/cmdline/update-cmd.c (revision 15538) +++ subversion/clients/cmdline/update-cmd.c (working copy) @@ -51,11 +51,17 @@ svn_cl__get_notifier (&ctx->notify_func2, &ctx->notify_baton2, FALSE, FALSE, FALSE, pool); - SVN_ERR (svn_client_update2 (NULL, targets, - &(opt_state->start_revision), - opt_state->nonrecursive ? FALSE : TRUE, - opt_state->ignore_externals, - ctx, pool)); + SVN_ERR (svn_cl__try (svn_client_update2 (NULL, targets, + &(opt_state->start_revision), + opt_state->nonrecursive ? + FALSE : TRUE, + opt_state->ignore_externals, + ctx, pool), + NULL, opt_state->quiet, + SVN_ERR_UNVERSIONED_RESOURCE, + SVN_ERR_ENTRY_NOT_FOUND, + SVN_ERR_WC_UNSUPPORTED_FORMAT, + SVN_NO_ERROR)); return SVN_NO_ERROR; } Index: subversion/clients/cmdline/status-cmd.c =================================================================== --- subversion/clients/cmdline/status-cmd.c (revision 15538) +++ subversion/clients/cmdline/status-cmd.c (working copy) @@ -215,13 +215,20 @@ SVN_ERR (print_start_target_xml (svn_path_local_style (target, pool), pool)); - SVN_ERR (svn_client_status2 (&repos_rev, target, &rev, print_status, &sb, - opt_state->nonrecursive ? FALSE : TRUE, - opt_state->verbose, - opt_state->update, - opt_state->no_ignore, - opt_state->ignore_externals, - ctx, subpool)); + SVN_ERR (svn_cl__try (svn_client_status2 (&repos_rev, target, + &rev, print_status, &sb, + opt_state->nonrecursive ? + FALSE : TRUE, + opt_state->verbose, + opt_state->update, + opt_state->no_ignore, + opt_state->ignore_externals, + ctx, subpool), + NULL, opt_state->quiet, + SVN_ERR_WC_PATH_NOT_FOUND, + SVN_ERR_ENTRY_NOT_FOUND, + SVN_ERR_CLIENT_IS_DIRECTORY, + SVN_NO_ERROR)); if (opt_state->xml) SVN_ERR (print_finish_target_xml (repos_rev, pool)); }