From 263ee1d067c8ef7361ecdb096ee227011f8d25dd Mon Sep 17 00:00:00 2001 From: josh Date: Thu, 31 May 2012 20:02:48 +0000 Subject: [PATCH 1/3] Add explanation of how git on Windows handles symlinks. --- doc/design/assistant/windows.mdwn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/design/assistant/windows.mdwn b/doc/design/assistant/windows.mdwn index 0b176934b9..89c3082a85 100644 --- a/doc/design/assistant/windows.mdwn +++ b/doc/design/assistant/windows.mdwn @@ -8,7 +8,8 @@ Stackoverflow has some details. Make git use them, as it (apparently) does not yet. -(What **does** git do on Windows when it clones a repo with symlinks?) +Currently, on Windows, git checks out symlinks as files containing the symlink +target as their contents. ## POSIX From 233d4020755429785688ab91e99bd260ffbc1490 Mon Sep 17 00:00:00 2001 From: josh Date: Thu, 31 May 2012 20:03:02 +0000 Subject: [PATCH 2/3] Fix typo. --- doc/design/assistant/windows.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/design/assistant/windows.mdwn b/doc/design/assistant/windows.mdwn index 89c3082a85..850f98194e 100644 --- a/doc/design/assistant/windows.mdwn +++ b/doc/design/assistant/windows.mdwn @@ -15,4 +15,4 @@ target as their contents. Lots of ifdefs and pain to deal with POSIX calls in the code base. -Or I could try to use Cywin. +Or I could try to use Cygwin. From c47b1ecda00cea6d9922e0733c3ab365bc2f004d Mon Sep 17 00:00:00 2001 From: josh Date: Thu, 31 May 2012 20:11:43 +0000 Subject: [PATCH 3/3] Discussion of NTFS symlinks, junction points, and reparse points. --- doc/design/assistant/windows.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/design/assistant/windows.mdwn b/doc/design/assistant/windows.mdwn index 850f98194e..da669ad82c 100644 --- a/doc/design/assistant/windows.mdwn +++ b/doc/design/assistant/windows.mdwn @@ -6,6 +6,8 @@ Apparently new versions of Windows have something very like symlinks. (Or really, 3 or so things not entirely unlike symlinks and all different.) Stackoverflow has some details. +NTFS supports symbolic links two different ways: an [[!wikipedia NTFS symbolic link]] and an [[!wikipedia NTFS_junction_point]]. The former seems like the closest analogue to POSIX symlinks. + Make git use them, as it (apparently) does not yet. Currently, on Windows, git checks out symlinks as files containing the symlink @@ -16,3 +18,7 @@ target as their contents. Lots of ifdefs and pain to deal with POSIX calls in the code base. Or I could try to use Cygwin. + +## Deeper system integration + +[NTFS Reparse Points](http://msdn.microsoft.com/en-us/library/aa365503%28v=VS.85%29.aspx) allow a program to define how the OS will interpret a file or directory in arbitrary ways. This requires writing a file system filter.