You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Greg Stein <gs...@gmail.com> on 2009/09/23 21:04:08 UTC

Re: svn commit: r39547 - trunk/subversion/libsvn_wc

On Wed, Sep 23, 2009 at 16:06, Bert Huijben <rh...@sharpsvn.net> wrote:
>...
> +++ trunk/subversion/libsvn_wc/diff.c   Wed Sep 23 13:06:53 2009        (r39547)
>...
> @@ -791,16 +790,19 @@ directory_elements_diff(struct dir_baton
>           && strcmp(dir_baton->edit_baton->target, name))
>         continue;
>
> -      path = svn_dirent_join(dir_baton->path, name, subpool);
> +      path = svn_dirent_join(dir_baton->path, name, iterpool);
>
>       /* Skip entry if it is in the list of entries already diff'd. */
>       if (apr_hash_get(dir_baton->compared, path, APR_HASH_KEY_STRING))
>         continue;
>
> +      SVN_ERR(svn_wc__get_entry(&entry, eb->db, child_abpath, FALSE,
> +                                svn_node_unknown, FALSE, iterpool, iterpool));

Isn't this going to cause problems with missing/obstructed child subdirs?

>...
> -      /* Skip entry for the directory itself. */
> -      if (strcmp(key, SVN_WC_ENTRY_THIS_DIR) == 0)
> +      SVN_ERR(svn_wc__db_node_hidden(&hidden, eb->db, child_abspath,
> +                                     iterpool));
> +
> +      if (hidden)
>         continue;
>
> +      SVN_ERR(svn_wc__get_entry(&entry, eb->db, child_abspath, FALSE,
> +                                svn_node_unknown, FALSE, iterpool, iterpool));

And here.

The hidden check won't catch the issue.

>...

Cheers,
-g

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2399071

RE: svn commit: r39547 - trunk/subversion/libsvn_wc

Posted by Bert Huijben <rh...@sharpsvn.net>.
> -----Original Message-----
> From: Greg Stein [mailto:gstein@gmail.com]
> Sent: woensdag 23 september 2009 23:04
> To: dev@subversion.tigris.org
> Subject: Re: svn commit: r39547 - trunk/subversion/libsvn_wc
> 
> On Wed, Sep 23, 2009 at 16:06, Bert Huijben <rh...@sharpsvn.net>
> wrote:
> >...
> > +++ trunk/subversion/libsvn_wc/diff.c   Wed Sep 23 13:06:53 2009
>    (r39547)
> >...
> > @@ -791,16 +790,19 @@ directory_elements_diff(struct dir_baton
> >           && strcmp(dir_baton->edit_baton->target, name))
> >         continue;
> >
> > -      path = svn_dirent_join(dir_baton->path, name, subpool);
> > +      path = svn_dirent_join(dir_baton->path, name, iterpool);
> >
> >       /* Skip entry if it is in the list of entries already diff'd.
> */
> >       if (apr_hash_get(dir_baton->compared, path,
> APR_HASH_KEY_STRING))
> >         continue;
> >
> > +      SVN_ERR(svn_wc__get_entry(&entry, eb->db, child_abpath, FALSE,
> > +                                svn_node_unknown, FALSE, iterpool,
> iterpool));
> 
> Isn't this going to cause problems with missing/obstructed child
> subdirs?

(As answered on IRC:)

Yes it does cause problems, but otherwise it would fail a tiny bit later...

All this because we can't create a diff report on missing/obstructed dirs. 

We can probably define a better algorithm when we are on the single db, but we failed before this patch and do now in a slightly different way after the patch. 

	Bert

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2399082