On 16.01.2012 11:34, Philip Martin wrote:
Philip Martin<philip.mar...@wandisco.com>  writes:

Now I can reproduce the error.

So the problem occurs when we have a patch file with one item that adds
two levels of directories and another item that deletes a file:

Index: wc/A/B/f
===================================================================
--- wc/A/B/f    (revision 0)
+++ wc/A/B/f    (working copy)
@@ -0,0 +1 @@
+foo
Index: wc/f
===================================================================
--- wc/f        (revision 1)
+++ wc/f        (working copy)
@@ -1 +0,0 @@
-5

$ svn patch --dry-run --strip 1 x.x wc
A         wc/A
A         wc/A/B
A         wc/A/B/f
D         wc/f
svn: E155010: The node '/home/pm/sw/subversion/obj/wc/A' was not found.


The following appears to work:

Index: subversion/libsvn_client/patch.c
===================================================================
--- subversion/libsvn_client/patch.c    (revision 1231875)
+++ subversion/libsvn_client/patch.c    (working copy)
@@ -2718,7 +2718,7 @@
    empty_dirs = apr_hash_make(scratch_pool);
    non_empty_dirs = apr_hash_make(scratch_pool);
    iterpool = svn_pool_create(scratch_pool);
-  for (i = 0; i<  targets_info->nelts; i++)
+  for (i = 0; i<  deleted_targets->nelts; i++)
      {
        svn_boolean_t parent_empty;
        patch_target_info_t *target_info;
@@ -2729,7 +2729,7 @@
        if (ctx->cancel_func)
          SVN_ERR(ctx->cancel_func(ctx->cancel_baton));

-      target_info = APR_ARRAY_IDX(targets_info, i, patch_target_info_t *);
+      target_info = APR_ARRAY_IDX(deleted_targets, i, patch_target_info_t *);

        parent = svn_dirent_dirname(target_info->local_abspath, iterpool);



Confirmed. This works.

Stefan

--
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net

Reply via email to