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 2014/03/11 13:29:21 UTC

svn commit: r1576308 - in /subversion/trunk/subversion: libsvn_wc/status.c tests/cmdline/commit_tests.py

Author: rhuijben
Date: Tue Mar 11 12:29:21 2014
New Revision: 1576308

URL: http://svn.apache.org/r1576308
Log:
Resolve a long standing inconsistency between svn_wc_status3() and
svn_wc_walk_status when the explicit target isn't visible in the wc
(not present, excluded, or doesn't exist) and doesn't exist on disk.

In this case the node wasn't reported, as this case was accidentally
handled as not present descendants, which should really be hidden
from callers.

This resolves a small argument parsing regression in commit since
Subversion 1.8.

* subversion/libsvn_wc/status.c
  (one_child_status): Only skip descendants that don't exist; not the root
    of the status operation.

* subversion/tests/cmdline/commit_tests.py
  (commit_unversioned): Remove XFail marker.

Modified:
    subversion/trunk/subversion/libsvn_wc/status.c
    subversion/trunk/subversion/tests/cmdline/commit_tests.py

Modified: subversion/trunk/subversion/libsvn_wc/status.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/status.c?rev=1576308&r1=1576307&r2=1576308&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/status.c (original)
+++ subversion/trunk/subversion/libsvn_wc/status.c Tue Mar 11 12:29:21 2014
@@ -1132,11 +1132,16 @@ one_child_status(const struct walk_statu
    * look up the kinds in the conflict ... just show all. */
   if (! conflicted)
     {
-      /* Selected node, but not found */
-      if (dirent == NULL)
-        return SVN_NO_ERROR;
+      /* We have a node, but its not visible in the WC. It can be a marker
+         node (not present, (server) excluded), *or* it can be the explictly
+         passed target of the status walk operation that doesn't exist.
+
+         We only report the node when the caller explicitly as
+      */
+      if (dirent == NULL && strcmp(wb->target_abspath, local_abspath) != 0)
+        return SVN_NO_ERROR; /* Marker node */
 
-      if (depth == svn_depth_files && dirent->kind == svn_node_dir)
+      if (depth == svn_depth_files && dirent && dirent->kind == svn_node_dir)
         return SVN_NO_ERROR;
 
       if (svn_wc_is_adm_dir(svn_dirent_basename(local_abspath, NULL),

Modified: subversion/trunk/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/commit_tests.py?rev=1576308&r1=1576307&r2=1576308&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/commit_tests.py Tue Mar 11 12:29:21 2014
@@ -2945,7 +2945,6 @@ def last_changed_of_copied_subdir(sbox):
              }
   svntest.actions.run_and_verify_info([expected], E_copied)
 
-@XFail()
 def commit_unversioned(sbox):
   "verify behavior on unversioned targets"