On Thu, Feb 23, 2012 at 10:47:14PM +0100, Bert Huijben wrote:
> > @@ -1111,13 +1111,38 @@ get_dir_status(const struct walk_status_
> > {
> > /* Handle "this-dir" first. */
> > if (! skip_this_dir)
> > - SVN_ERR(send_status_structure(wb, local_abspath,
> > - parent_repos_root_url,
> > - parent_repos_relpath,
> > - parent_repos_uuid,
> > - dir_info, dirent, get_all,
> > - status_func, status_baton,
> > - iterpool));
> > + {
> > +#ifdef HAVE_SYMLINK
> > + if (dirent->special)
> > + {
> > + svn_io_dirent2_t *this_dirent = svn_io_dirent2_dup(dirent,
> > + iterpool);
> > +
> > + /* We're being pointed to "this-dir" via a symlink.
> > + * Get the real node kind and pretend the path is not a symlink.
> > + * This prevents send_status_structure() from treating this-dir
> > + * as a directory obstructed by a file. */
> > + SVN_ERR(svn_io_check_resolved_path(local_abspath,
> > + &this_dirent->kind, iterpool));
> > + this_dirent->special = FALSE;
> > + SVN_ERR(send_status_structure(wb, local_abspath,
> > + parent_repos_root_url,
> > + parent_repos_relpath,
> > + parent_repos_uuid,
> > + dir_info, this_dirent, get_all,
> > + status_func, status_baton,
> > + iterpool));
>
> This doesn't look like the right function to apply this fix. This function is called for all subdirectories as well, while your fix should only apply to the root?
You're right. Thanks for checking.
This code is quite different on trunk, and I didn't carefully check
the recursive nature of the 1.7.x code while backporting this.
Should be fixed by r1293080.
Received on 2012-02-24 06:07:16 CET