-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Kannan wrote:
[..]

Attached herewith is the updated/corrected patch to perform the earlier
proposed functionality.

[[[
Log:
Make `--set-depth (empty|files|immediates) DIR' work, where DIR's depth
had already been set as `exclude'. Only `infinity' works as of now.

* subversion/libsvn_wc/crop.c
  (svn_wc_crop_tree2): Check the 'base status' of the node here and
   remove the check done using `svn_wc__db_node_hidden()' as it
   marks  a node as 'hidden' if status is set as
   `svn_wc__db_status_excluded'.

* update_editor.c
  (complete_directory): Call `svn_wc__set_depth' with the requested
   depth rather than `infinity' by default.

* entries.c
  (svn_wc__set_depth): Set the entry's depth to the requested one rather
   than `infinity' by default if the depth is not `exclude'.

* wc_db.c
  (svn_wc__db_temp_op_dir_set_depth): Remove the code which sets the
   depth as `infinity' if the depth is not `exclude'.

Patch by: Kannan R <kann...@collab.net>
]]]


- --
Thanks & Regards,
Kannan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEVAwUBSzoApHlTqcY7ytmIAQJAoAf/fA5eU8enaTiY8g8kX1PPxSFYl6hqldNX
2AcX7BFD3O8vJ8EtTNqJeauFWdL0Cdw/iPJGbSvDUeKPh1FeEZPz397xUnVdCTFT
cPDJOZwS6PN1rf+74lOAzf6zHOutM/gllEjq0Pv+06O/F7ENxjshZur7NdxL5TqV
6PLKL4//jNKXJITyLddbj/IJV0P61B5DYVuCl8Jjj1+z/l4x1qqEFefTOT+W28CD
j8kjRYnBbVal6fRRTi2/SFtdFaU/62JDrgLMV8njCqERBXOsYxlhG23ocEEYFeVx
/uMnMlPoV090EnvRg3VBj1GJ88vlCqbpM/F1J92RrTaTYQYGJWG/vQ==
=dPp+
-----END PGP SIGNATURE-----
Index: subversion/libsvn_wc/crop.c
===================================================================
--- subversion/libsvn_wc/crop.c	(revision 893084)
+++ subversion/libsvn_wc/crop.c	(working copy)
@@ -335,17 +335,6 @@
       _("Can only crop a working copy with a restrictive depth"));
 
   {
-    svn_boolean_t hidden;
-    SVN_ERR(svn_wc__db_node_hidden(&hidden, db, local_abspath, scratch_pool));
-
-    if (hidden)
-      return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND, NULL,
-                               _("The node '%s' was not found."),
-                               svn_dirent_local_style(local_abspath,
-                                                      scratch_pool));
-  }
-
-  {
     svn_wc__db_status_t status;
     svn_wc__db_kind_t kind;
 
@@ -360,6 +349,13 @@
       return svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
         _("Can only crop directories"));
 
+    if (status == svn_wc__db_status_not_present
+        || status == svn_wc__db_status_absent)
+      return svn_error_createf(SVN_ERR_WC_PATH_NOT_FOUND, NULL,
+                               _("The node '%s' was not found."),
+                               svn_dirent_local_style(local_abspath,
+                                                      scratch_pool));
+
     if (status == svn_wc__db_status_deleted ||
         status == svn_wc__db_status_obstructed_delete)
       return svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c	(revision 893084)
+++ subversion/libsvn_wc/update_editor.c	(working copy)
@@ -706,7 +706,7 @@
           else
             {
               SVN_ERR(svn_wc__set_depth(eb->db, eb->target_abspath,
-                                        svn_depth_infinity, pool));
+                                        eb->requested_depth, pool));
             }
         }
 
Index: subversion/libsvn_wc/entries.c
===================================================================
--- subversion/libsvn_wc/entries.c	(revision 893084)
+++ subversion/libsvn_wc/entries.c	(working copy)
@@ -1567,10 +1567,7 @@
                        : NULL;
 
       if (entry != NULL)
-        {
-          entry->depth = (depth == svn_depth_exclude) ? svn_depth_exclude
-                                                      : svn_depth_infinity;
-        }
+        entry->depth = depth;
     }
 
   /* ### setting depth exclude on a wcroot breaks svn_wc_crop() */
Index: subversion/libsvn_wc/wc_db.c
===================================================================
--- subversion/libsvn_wc/wc_db.c	(revision 893084)
+++ subversion/libsvn_wc/wc_db.c	(working copy)
@@ -3120,9 +3120,6 @@
       if (flush_entry_cache)
         flush_entries(pdh);
 
-      depth = (depth == svn_depth_exclude) ? svn_depth_exclude
-                                           : svn_depth_infinity;
-
       VERIFY_USABLE_PDH(pdh);
       wcroot = pdh->wcroot;
       sdb = wcroot->sdb;

Reply via email to