You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2010/08/09 23:18:03 UTC
svn commit: r983827 - /subversion/trunk/subversion/libsvn_wc/workqueue.c
Author: rhuijben
Date: Mon Aug 9 21:17:56 2010
New Revision: 983827
URL: http://svn.apache.org/viewvc?rev=983827&view=rev
Log:
Following up on r983823, fix the real issue: we should not delete local
nodes for base nodes if the WORKING state of the node is deleted.
* subversion/libsvn_wc/workqueue.c
(remove_base_node): Don't remove nodes if their state is deleted, unless
the node is a directory and we are not at single-db yet.
Modified:
subversion/trunk/subversion/libsvn_wc/workqueue.c
Modified: subversion/trunk/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.c?rev=983827&r1=983826&r2=983827&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.c Mon Aug 9 21:17:56 2010
@@ -728,27 +728,17 @@ remove_base_node(svn_wc__db_t *db,
scratch_pool));
#endif
- if (base_kind == svn_wc__db_kind_file
- || base_kind == svn_wc__db_kind_symlink)
+ if (wrk_status != svn_wc__db_status_deleted
+ && (base_kind == svn_wc__db_kind_file
+ || base_kind == svn_wc__db_kind_symlink))
{
-#ifdef HAVE_SYMLINK
- svn_boolean_t wc_special, local_special;
- svn_node_kind_t on_disk;
-
- SVN_ERR(svn_wc__get_translate_info(NULL, NULL, NULL,
- &wc_special, db, local_abspath,
- scratch_pool, scratch_pool));
- SVN_ERR(svn_io_check_special_path(local_abspath, &on_disk,
- &local_special, scratch_pool));
-
- /* Don't delete a file obstructing a symlink or vice versa */
- /* ### Shouldn't this be handled as a tree conflict
- ### in the update editor? */
- if (wc_special == local_special)
-#endif /* HAVE_SYMLINK */
- SVN_ERR(svn_io_remove_file2(local_abspath, TRUE, scratch_pool));
+ SVN_ERR(svn_io_remove_file2(local_abspath, TRUE, scratch_pool));
}
- else
+ else if (base_kind == svn_wc__db_kind_dir
+#ifdef SVN_WC__SINGLE_DB
+ && wrk_status != svn_wc__db_status_deleted
+#endif
+ )
{
svn_error_t *err = svn_io_dir_remove_nonrecursive(local_abspath,
scratch_pool);