Author: rhuijben
Date: Thu Jul 18 15:52:08 2013
New Revision: 1504505

URL: http://svn.apache.org/r1504505
Log:
Following up on r1504192, stop trying to calculate local wc-diffs on
all unversioned paths. This should fix issue #4396.

* subversion/libsvn_wc/diff_local.c
  (diff_status_callback): Simplify global status check by checking for
    unversioned and conflicted specifically.

* subversion/tests/cmdline/diff_tests.py
  (diff_local_missing_obstruction): Extend test with an external.

Modified:
    subversion/trunk/subversion/libsvn_wc/diff_local.c
    subversion/trunk/subversion/tests/cmdline/diff_tests.py

Modified: subversion/trunk/subversion/libsvn_wc/diff_local.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/diff_local.c?rev=1504505&r1=1504504&r2=1504505&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/diff_local.c (original)
+++ subversion/trunk/subversion/libsvn_wc/diff_local.c Thu Jul 18 15:52:08 2013
@@ -195,23 +195,15 @@ diff_status_callback(void *baton,
   struct diff_baton *eb = baton;
   svn_wc__db_t *db = eb->db;
 
-  switch (status->node_status)
-    {
-      case svn_wc_status_unversioned:
-      case svn_wc_status_ignored:
-        return SVN_NO_ERROR; /* No diff */
-
-      case svn_wc_status_conflicted:
-        if (status->text_status == svn_wc_status_none
-            && status->prop_status == svn_wc_status_none)
-          {
-            /* Node is an actual only node describing a tree conflict */
-            return SVN_NO_ERROR;
-          }
-        break;
+  if (! status->versioned)
+    return SVN_NO_ERROR; /* unversioned (includes dir externals) */
 
-      default:
-        break; /* Go check other conditions */
+  if (status->node_status == svn_wc_status_conflicted
+      && status->text_status == svn_wc_status_none
+      && status->prop_status == svn_wc_status_none)
+    {
+      /* Node is an actual only node describing a tree conflict */
+      return SVN_NO_ERROR;
     }
 
   /* Not text/prop modified, not copied. Easy out */

Modified: subversion/trunk/subversion/tests/cmdline/diff_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/diff_tests.py?rev=1504505&r1=1504504&r2=1504505&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/diff_tests.py Thu Jul 18 15:52:08 
2013
@@ -4626,6 +4626,13 @@ def diff_local_missing_obstruction(sbox)
   ]
   svntest.actions.run_and_verify_svn(None, expected_output, [], 'diff', wc_dir)
 
+  # Create an external. This produces an error in 1.8.0.
+  sbox.simple_propset('svn:externals', 'AA/BB ' + sbox.repo_url + '/A', '.')
+  sbox.simple_update()
+
+  svntest.actions.run_and_verify_svn(None, svntest.verify.AnyOutput, [],
+                                     'diff', wc_dir)
+
 
 ########################################################################
 #Run the tests


Reply via email to