> -----Original Message-----
> From: s...@apache.org [mailto:s...@apache.org]
> Sent: woensdag 3 februari 2010 12:54
> To: comm...@subversion.apache.org
> Subject: svn commit: r906016 -
> /subversion/trunk/subversion/libsvn_client/patch.c
> 
> Author: stsp
> Date: Wed Feb  3 11:53:32 2010
> New Revision: 906016
> 
> URL: http://svn.apache.org/viewvc?rev=906016&view=rev
> Log:
> * subversion/libsvn_client/patch.c
>   (apply_one_patch): Check for existing unversioned, ignored, or obstructed
>    directories when creating missing parent directories for a target,
>    and skip the target if its parent directory cannot be created.
> 
> Modified:
>     subversion/trunk/subversion/libsvn_client/patch.c
> 
> Modified: subversion/trunk/subversion/libsvn_client/patch.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/p
> atch.c?rev=906016&r1=906015&r2=906016&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_client/patch.c (original)
> +++ subversion/trunk/subversion/libsvn_client/patch.c Wed Feb  3 11:53:32
> 2010
> @@ -1229,6 +1229,7 @@
>                    for (i = 0; i < missing_components; i++)
>                      {
>                        const char *component;
> +                      svn_wc_status2_t *status;
> 
>                        svn_pool_clear(iterpool);
> 
> @@ -1236,6 +1237,18 @@
>                                                  const char *);
>                        abs_path = svn_dirent_join(abs_path, component,
>                                                   pool);
> +
> +                      /* Skip things we should not be messing with. */
> +                      SVN_ERR(svn_wc_status3(&status, ctx->wc_ctx, abs_path,
> +                                             iterpool, iterpool));
> +                      if (status->text_status == svn_wc_status_unversioned ||
> +                          status->text_status == svn_wc_status_ignored ||
> +                          status->text_status == svn_wc_status_obstructed)
> +                        {
> +                          target->skipped = TRUE;
> +                          break;
> +                        }

I thinks something like svn_wc__node_get_kind() would be enough here. 
svn_wc_status() does a status scan (Compare against pristine) which you don't 
need here.

I'm not sure what a proper way of handling obstructed (file<->dir misplacement) 
is after that change, but I doubt if it is relevant if you try other operations 
that assume a specific kind later on.

        Bert

Reply via email to