[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: handling of reparse points

From: emmawatson8855 <emmawatson.8855_at_gmail.com>
Date: Tue, 5 Jun 2018 01:53:14 -0700 (MST)

Johan Corveleyn-3 wrote
> On Sat, May 26, 2018 at 9:42 AM, Branko Čibej &lt;

> brane@

> &gt; wrote:
>> On 25.05.2018 20:30, Stefan Kueng wrote:
>>>
>>>
>>> On 25.05.2018 18:07, Daniel Shahaf wrote:
>>>> 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.
>>>
>>> And I'm not familiar with soft/hardlinks on Linux. :)
>>>
>>>> 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).
>>>
>>> ok, so this breaks on non-Windows systems.
>>> I'll try another patch soon.
>>>
>>> question: symlink handling in svn does not seem to actually work on
>>> Windows. At least the docs state that they're not handled on Windows.
>>> So why do we even check for 'special' nodes on a Windows build?
>>>
>>> If e.g. svn_io_check_special_path() on Windows would always return
>>> false and svn_io_check_path() always call svn_io_check_resolved_path()
>>> instead, this would work fine with the reparse points on Windows.
>>>
>>> So is there a reason why this is not done so on Windows? Is there
>>> maybe a reason for handling reparse points specially on Windows that I
>>> don't know of?
>>
>> Subversion can't create symbolic links on Windows the way it can on any
>> normal OS, for several reasons:
>>
>> * The Windows CreateSymbolicLink function needs to know in advance if
>> the target of a symlink (or any other kind of reparse point, really)
>> is a directory or not. That's a non-starter; Unix symlinks can point
>> to a non-existent target.
>> * It requires elevated permissions on most versions of Windows.
>> * Windows reparse points have subtly different semantics than symlinks
>> on Unix.
>
> I don't think that's what StefanK is after (versioning symlinks /
> handling versioned symlinks on Windows). AFAIU Stefan is trying to
> make SVN work properly on Windows when the entire working copy itself
> (or maybe only its .svn folder?) is "tucked away" behind a reparse
> point.
>
> "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. [...] I've attached a patch for handling reparse
> points better when detecting and reading the working copy database."
>
> Or maybe you were replying specifically to Stefan's points / questions
> about svn_io_check_[special_|resolved_]path ? Does he actually need to
> use another API (or write his own helper functions) for what he's
> trying to do here?
>
> (Just trying to clear up a possible source of confusion)
> --
> Johan

Thank you for responce

-----
Mobile App Development Company

--
Sent from: http://subversion.1072662.n5.nabble.com/Subversion-Dev-f4725.html
Received on 2018-06-05 12:04:24 CEST

This is an archived mail posted to the Subversion Dev mailing list.