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.