[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: Stefan Kueng <tortoisesvn_at_gmail.com>
Date: Fri, 8 Jun 2018 18:25:54 +0200

On 08.06.2018 00:30, Branko Čibej wrote:

>> Just FYI: in that case svn would have a requirement for NTFS. Because
>> both hard links (for files) and junctions (for directories) only work
>> on NTFS. So it wouldn't be possible anymore to use svn on e.g. a usb
>> stick formatted with FAT32.
>
> Yes ... we'd _also_ have to detect the capabilities of the underlying
> filesystem.

And not just that: you'd also have to check whether a reparse point is
in fact a junction and not something else (like the sparse files of the
OneDrive folder).

>> On Windows, the MoveFileEx() API which is used by win32_file_rename
>> which is used by svn_io_file_rename2 can work that way: the flag
>> MOVEFILE_COPY_ALLOWED must be passed as well. Then the Move works
>> across volumes because Windows then does the move as a copy/delete
>> instead.
>
> We do use that flag, but — just like cross-device copies on Unix — the
> move is no longer atomic, which could break the working copy quite badly.

there's also the MoveFileTransacted(), but MS recommends to not use that
if there's another way to do it.

>> Also: the current implementation on Windows handles links wrong: it
>> assumes that a reparse point is always a junction, but that's not the
>> case. A junction is just a special form of a reparse point.
>
> Well, the more patches we get to fix these issues, the better.

In the mean time, can we apply my patch to make things work with
OneDrive folders?

Stefan
Received on 2018-06-08 18:26:06 CEST

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