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);