Issue description:

'svn status' should reported nested working copies as unversioned regardless of
the format of their working copies.

Issue link: http://subversion.tigris.org/issues/show_bug.cgi?id=3742

All tests pass using 'make check'

Log
[[[

Make 'svn status' report nested working copies as unversioned regardless
of the format of their working copies.

* subversion/svn/status.c,
  subversion/libsvn_wc/status.c
  (print_status, assemble_unversioned): Consider other format working
    copies as unversioned by ignoring SVN_ERR_WC_UPGRADE_REQUIRED error.

* subversion/tests/cmdline/stat_tests.py
  (status_nested_wc_old_format): Remove XFail marker.

Patch by: Noorul Islam K M <noorul{_AT_}collab.net>
]]]

Index: subversion/tests/cmdline/stat_tests.py
===================================================================
--- subversion/tests/cmdline/stat_tests.py      (revision 1071136)
+++ subversion/tests/cmdline/stat_tests.py      (working copy)
@@ -1793,7 +1793,6 @@
 
 #----------------------------------------------------------------------
 # Regression for issue #3742
-@XFail()
 @Issue(3742)
 def status_nested_wc_old_format(sbox):
   "status on wc with nested old-format wc"
Index: subversion/svn/status.c
===================================================================
--- subversion/svn/status.c     (revision 1071136)
+++ subversion/svn/status.c     (working copy)
@@ -150,12 +150,17 @@
       svn_boolean_t text_conflicted;
       svn_boolean_t prop_conflicted;
       svn_boolean_t tree_conflicted;
+      svn_error_t *err;
 
-      SVN_ERR(svn_wc__node_check_conflicts(&prop_conflicted,
-                                           &text_conflicted,
-                                           &tree_conflicted, ctx->wc_ctx,
-                                           local_abspath, pool, pool));
+      err = svn_wc__node_check_conflicts(&prop_conflicted,
+                                         &text_conflicted,
+                                         &tree_conflicted, ctx->wc_ctx,
+                                         local_abspath, pool, pool);
 
+      if (err && err->apr_err == SVN_ERR_WC_UPGRADE_REQUIRED)
+        svn_error_clear(err);
+      else
+        SVN_ERR(err);
 
       if (tree_conflicted)
         {
Index: subversion/libsvn_wc/status.c
===================================================================
--- subversion/libsvn_wc/status.c       (revision 1071136)
+++ subversion/libsvn_wc/status.c       (working copy)
@@ -695,13 +695,21 @@
 {
   svn_wc_status3_t *stat;
   const svn_wc_conflict_description2_t *tree_conflict;
+  svn_error_t *err;
 
   /* Find out whether the path is a tree conflict victim.
      This function will set tree_conflict to NULL if the path
      is not a victim. */
-  SVN_ERR(svn_wc__db_op_read_tree_conflict(&tree_conflict,
-                                           db, local_abspath,
-                                           scratch_pool, scratch_pool));
+  err = svn_wc__db_op_read_tree_conflict(&tree_conflict,
+                                         db, local_abspath,
+                                         scratch_pool, scratch_pool);
+  
+  if (path_kind == svn_node_dir && 
+      err && 
+      err->apr_err == SVN_ERR_WC_UPGRADE_REQUIRED)
+    svn_error_clear(err);
+  else
+    SVN_ERR(err);
 
   /* return a fairly blank structure. */
   stat = apr_pcalloc(result_pool, sizeof(**status));

Reply via email to