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/06/05 14:28:25 UTC

svn commit: r1600633 - in /subversion/branches/1.8.x-rm-external-dir: ./ subversion/libsvn_client/externals.c subversion/tests/cmdline/externals_tests.py

Author: rhuijben
Date: Thu Jun  5 12:28:24 2014
New Revision: 1600633

URL: http://svn.apache.org/r1600633
Log:
Merge r1600311,1600315,1600323,1600393 from trunk, resolving a trivial text conflict

Modified:
    subversion/branches/1.8.x-rm-external-dir/   (props changed)
    subversion/branches/1.8.x-rm-external-dir/subversion/libsvn_client/externals.c
    subversion/branches/1.8.x-rm-external-dir/subversion/tests/cmdline/externals_tests.py

Propchange: subversion/branches/1.8.x-rm-external-dir/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1600311,1600315,1600323,1600393

Modified: subversion/branches/1.8.x-rm-external-dir/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-rm-external-dir/subversion/libsvn_client/externals.c?rev=1600633&r1=1600632&r2=1600633&view=diff
==============================================================================
--- subversion/branches/1.8.x-rm-external-dir/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/1.8.x-rm-external-dir/subversion/libsvn_client/externals.c Thu Jun  5 12:28:24 2014
@@ -1017,19 +1017,30 @@ svn_client__handle_externals(apr_hash_t 
 
         parent_abspath = svn_dirent_dirname(parent_abspath, iterpool);
         SVN_ERR(svn_wc_read_kind2(&kind, ctx->wc_ctx, parent_abspath,
-                                  TRUE, FALSE, iterpool));
+                                  FALSE /* show_deleted*/,
+                                  FALSE /* show_hidden */,
+                                  iterpool));
         if (kind == svn_node_none)
           {
             svn_error_t *err;
 
             err = svn_io_dir_remove_nonrecursive(parent_abspath, iterpool);
-            if (err && APR_STATUS_IS_ENOTEMPTY(err->apr_err))
+            if (err)
               {
-                svn_error_clear(err);
-                break;
+                if (APR_STATUS_IS_ENOTEMPTY(err->apr_err))
+                  {
+                    svn_error_clear(err);
+                    break; /* No parents to delete */
+                  }
+                else if (APR_STATUS_IS_ENOENT(err->apr_err)
+                         || APR_STATUS_IS_ENOTDIR(err->apr_err))
+                  {
+                    svn_error_clear(err);
+                    /* Fall through; parent dir might be unversioned */
+                  }
+                else
+                  return svn_error_trace(err);
               }
-            else
-              SVN_ERR(err);
           }
       } while (strcmp(parent_abspath, defining_abspath) != 0);
     }

Modified: subversion/branches/1.8.x-rm-external-dir/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.8.x-rm-external-dir/subversion/tests/cmdline/externals_tests.py?rev=1600633&r1=1600632&r2=1600633&view=diff
==============================================================================
--- subversion/branches/1.8.x-rm-external-dir/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/branches/1.8.x-rm-external-dir/subversion/tests/cmdline/externals_tests.py Thu Jun  5 12:28:24 2014
@@ -3227,6 +3227,38 @@ def update_dir_external_shallow(sbox):
                                         sbox.ospath('A/B/E'))
 
 
+def update_deletes_file_external(sbox):
+  "update deletes a file external"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  sbox.simple_propset('svn:externals', '../D/gamma gamma', 'A/C')
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Create a branch
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'copy',
+                                     '-m', 'create branch',
+                                     sbox.repo_url + '/A',
+                                     sbox.repo_url + '/A_copy')
+
+  # Update the working copy
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Remove the branch
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'rm',
+                                     '-m', 'remove branch',
+                                     sbox.repo_url + '/A_copy')
+
+  # As of r1448345, this update fails:
+  # E000002: Can't remove directory '.../A_copy/C': No such file or directory
+  sbox.simple_update()
+  
+
 ########################################################################
 # Run the tests
 
@@ -3279,6 +3311,7 @@ test_list = [ None,
               move_with_file_externals,
               pinned_externals,
               update_dir_external_shallow,
+              update_deletes_file_external
              ]
 
 if __name__ == '__main__':