diff options
Diffstat (limited to 'subversion/libsvn_wc/wc_db.c')
-rw-r--r-- | subversion/libsvn_wc/wc_db.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/subversion/libsvn_wc/wc_db.c b/subversion/libsvn_wc/wc_db.c index 81056c9..ed59d4c 100644 --- a/subversion/libsvn_wc/wc_db.c +++ b/subversion/libsvn_wc/wc_db.c @@ -3815,8 +3815,15 @@ cross_db_copy(svn_wc__db_wcroot_t *src_wcroot, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, src_wcroot, src_relpath, scratch_pool, scratch_pool)); - SVN_ERR(db_read_pristine_props(&props, src_wcroot, src_relpath, FALSE, - scratch_pool, scratch_pool)); + if (dst_status != svn_wc__db_status_not_present + && dst_status != svn_wc__db_status_excluded + && dst_status != svn_wc__db_status_server_excluded) + { + SVN_ERR(db_read_pristine_props(&props, src_wcroot, src_relpath, FALSE, + scratch_pool, scratch_pool)); + } + else + props = NULL; blank_iwb(&iwb); iwb.presence = dst_status; @@ -5131,6 +5138,17 @@ db_op_copy_shadowed_layer(svn_wc__db_wcroot_t *src_wcroot, scratch_pool)); } + if (dst_presence == svn_wc__db_status_not_present) + { + /* Don't create descendants of a not present node! */ + + /* This code is currently still triggered by copying deleted nodes + between separate working copies. See ### comment above. */ + + svn_pool_destroy(iterpool); + return SVN_NO_ERROR; + } + SVN_ERR(gather_repo_children(&children, src_wcroot, src_relpath, src_op_depth, scratch_pool, iterpool)); |