diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2014-08-11 19:19:17 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2014-08-11 19:19:17 +0000 |
| commit | 6f0665939667af9f780762878fc35982e8b7d745 (patch) | |
| tree | 7641ccc1b31a300b13c0cfcf8ab6c33e17646de1 /subversion/libsvn_client | |
| parent | 41a48a0a1803245a188068c5200383b9543c25b2 (diff) | |
Notes
Diffstat (limited to 'subversion/libsvn_client')
| -rw-r--r-- | subversion/libsvn_client/delete.c | 7 | ||||
| -rw-r--r-- | subversion/libsvn_client/externals.c | 23 |
2 files changed, 20 insertions, 10 deletions
diff --git a/subversion/libsvn_client/delete.c b/subversion/libsvn_client/delete.c index 2f4ee664f335..803b70c1fb23 100644 --- a/subversion/libsvn_client/delete.c +++ b/subversion/libsvn_client/delete.c @@ -193,7 +193,7 @@ path_driver_cb_func(void **dir_baton, static svn_error_t * single_repos_delete(svn_ra_session_t *ra_session, - const char *repos_root, + const char *base_uri, const apr_array_header_t *relpaths, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, @@ -221,7 +221,7 @@ single_repos_delete(svn_ra_session_t *ra_session, const char *relpath = APR_ARRAY_IDX(relpaths, i, const char *); item = svn_client_commit_item3_create(pool); - item->url = svn_path_url_add_component2(repos_root, relpath, pool); + item->url = svn_path_url_add_component2(base_uri, relpath, pool); item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE; APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item; } @@ -361,7 +361,6 @@ delete_urls_multi_repos(const apr_array_header_t *uris, iterpool = svn_pool_create(pool); for (hi = apr_hash_first(pool, deletables); hi; hi = apr_hash_next(hi)) { - const char *repos_root = svn__apr_hash_index_key(hi); struct repos_deletables_t *repos_deletables = svn__apr_hash_index_val(hi); const char *base_uri; apr_array_header_t *target_relpaths; @@ -398,7 +397,7 @@ delete_urls_multi_repos(const apr_array_header_t *uris, } SVN_ERR(svn_ra_reparent(repos_deletables->ra_session, base_uri, pool)); - SVN_ERR(single_repos_delete(repos_deletables->ra_session, repos_root, + SVN_ERR(single_repos_delete(repos_deletables->ra_session, base_uri, target_relpaths, revprop_table, commit_callback, commit_baton, ctx, iterpool)); diff --git a/subversion/libsvn_client/externals.c b/subversion/libsvn_client/externals.c index e572dc7b3f00..8c08f405279e 100644 --- a/subversion/libsvn_client/externals.c +++ b/subversion/libsvn_client/externals.c @@ -1017,19 +1017,30 @@ svn_client__handle_externals(apr_hash_t *externals_new, parent_abspath = svn_dirent_dirname(parent_abspath, iterpool); SVN_ERR(svn_wc_read_kind2(&kind, ctx->wc_ctx, parent_abspath, - TRUE, FALSE, iterpool)); + FALSE /* show_deleted*/, + FALSE /* show_hidden */, + iterpool)); if (kind == svn_node_none) { svn_error_t *err; err = svn_io_dir_remove_nonrecursive(parent_abspath, iterpool); - if (err && APR_STATUS_IS_ENOTEMPTY(err->apr_err)) + if (err) { - svn_error_clear(err); - break; + if (APR_STATUS_IS_ENOTEMPTY(err->apr_err)) + { + svn_error_clear(err); + break; /* No parents to delete */ + } + else if (APR_STATUS_IS_ENOENT(err->apr_err) + || APR_STATUS_IS_ENOTDIR(err->apr_err)) + { + svn_error_clear(err); + /* Fall through; parent dir might be unversioned */ + } + else + return svn_error_trace(err); } - else - SVN_ERR(err); } } while (strcmp(parent_abspath, defining_abspath) != 0); } |
