You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Bert Huijben <be...@qqmail.nl> on 2010/02/03 12:27:31 UTC

RE: svn commit: r906016 - /subversion/trunk/subversion/libsvn_client/patch.c


> -----Original Message-----
> From: stsp@apache.org [mailto:stsp@apache.org]
> Sent: woensdag 3 februari 2010 12:54
> To: commits@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

Re: svn commit: r906016 - /subversion/trunk/subversion/libsvn_client/patch.c

Posted by Stefan Sperling <st...@elego.de>.
On Wed, Feb 03, 2010 at 01:27:31PM +0100, Bert Huijben wrote:
> I thinks something like svn_wc__node_get_kind() would be enough here.

How can that tell me if the directory is unversioned?
I want to skip unversioned directories.

Stefan