Stefan Küng wrote on Fri, 25 May 2018 17:37 +0200:
> Can anyone comment on this please?

I'm not familiar with the Windows side of things, but I gave the
patch a spin.

If I do 'mv .svn x; ln -s x .svn', things seem to work.  However, if the
target of the '.svn' symlink isn't in the same directory as the symlink,
'status' just shows everything with '!' status.  I didn't check, but if I'd
done 'ln -s ../../.svn subversion/tests/.svn' and run 'status' in
subversion/tests/, I assume it would confuse trunk/README and
trunk/subversion/tests/README (due to having the same basename).

It also has a test failure, attached.

> On Fri, May 18, 2018 at 10:29 PM Stefan Kueng <tortoise...@gmail.com> wrote:
> 
> > Hi,
> >
> > It seems that svn doesn't handle reparse points properly in all
> > situations. Which causes big problems for TSVN when a working copy is on
> > a Onedrive folder.
> >
> > See here for more details:
> > https://groups.google.com/d/msg/tortoisesvn/hlQj5OifhBg/RX_cw_sQCgAJ
> >
> > While in this particular situation, other svn clients are not affected,
> > it still means that there's a problem.
> >
> > I've attached a patch for handling reparse points better when detecting
> > and reading the working copy database. With this change, the TSVN
> > context menu shows up properly.
> >
> > But while I was trying to figure out this particular problem I noticed
> > that svn_io_check_path() never tries to resolve the reparse points. Why
> > is that? I mean if we need to check for links/reparse-points there's
> > svn_io_check_special_path(). Also, svn_io_check_path() always returns
> > node_file for reparse points, even if they point to directories.

I, too, would expect stat() to return 'directory' for a symlink to a directory.

> > IMHO handling links/reparse-points specially is only required in very
> > specific situations, like adding them. In most cases, resolving the
> > links/reparse points is what should be done. Or am I missing something
> > big here?

This is a very general statement ("most code should use stat() rather
than lstat()").  What specifically are you proposing to do?

Cheers,

Daniel

Attachment: special-tests-23.out
Description: Binary data

Reply via email to