Karsten Blees 2c65aca75e Win32: symlink: add support for symlinks to directories
Symlinks on Windows have a flag that indicates whether the target is a file
or a directory. Symlinks of wrong type simply don't work. This even affects
core Win32 APIs (e.g. DeleteFile() refuses to delete directory symlinks).

However, CreateFile() with FILE_FLAG_BACKUP_SEMANTICS doesn't seem to care.
Check the target type by first creating a tentative file symlink, opening
it, and checking the type of the resulting handle. If it is a directory,
recreate the symlink with the directory flag set.

It is possible to create symlinks before the target exists (or in case of
symlinks to symlinks: before the target type is known). If this happens,
create a tentative file symlink and postpone the directory decision: keep
a list of phantom symlinks to be processed whenever a new directory is
created in mingw_mkdir().

Limitations: This algorithm may fail if a link target changes from file to
directory or vice versa, or if the target directory is created in another
process.

Signed-off-by: Karsten Blees <blees@dcon.de>
2015-05-24 01:55:51 +02:00
2015-05-01 15:35:58 +02:00
2015-05-01 15:35:57 +02:00
2015-05-01 15:33:30 +02:00
2015-05-01 15:33:30 +02:00
2015-04-30 11:25:06 -07:00
2015-05-01 15:35:59 +02:00
2015-05-01 15:36:00 +02:00
2015-04-27 12:25:36 -07:00

Git for Windows

Join the chat at https://gitter.im/git-for-windows/git

This is the source code of Git for Windows, forked from Git.

This project is run by a governance model. If you encounter problems, you can report them as GitHub issues, discuss them on Git for Windows' Google Group, and contribute bug fixes.

Description
No description provided
Readme 660 MiB
Languages
C 50.5%
Shell 38.8%
Perl 4.4%
Tcl 3.2%
Python 0.8%
Other 2.1%