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