native symlink support should fallback to default format if target missing

James Gregurich
Tue May 14 21:04:00 GMT 2013

> I definitely see Christopher's point and I am very sympathetic to it as
> someone that has to support a large anonymous user community.  Provide
> rope but not enough to permit the user to hang themselves from the
> perspective of losing data through a lack of understanding of a how a
> feature works.
> I suspect the behavior that James really wants is the following:
> 1. if the target of a symlink exists and the underlying file system
>   supports symlink reparse points, create a symlink reparse point.
> 2. if underlying file system doesn't support symlink reparse points,
>   generate an error.
> 3. if the target of a symlink doesn't exist, create a cygwin
>   symlink as a place holder.
> 4. if a cygwin symlink is accessed and the target exists and the
>   file system supports symlink reparse points, replace the cygwin
>   symlink with the symlink reparse point.
> I believe the above behavior is a different mode than
> "winsymlinks:native".  Perhaps "winsymlinks:native-preferred".
> Jeffrey Altman

Works for me.  The key is that the system must work as unix software expects in terms of the creation of symlinks. You don't want the filesystem in an invalid state that cannot be recovered from or is much harder to recover from. If you have that, you can post-process to update default format symlinks to native symlinks once the targets are known.

More information about the Cygwin-developers mailing list