From ba3e20894d068d34186e485563cc1ab2819e8f5f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 30 Jan 2019 16:16:25 +0100 Subject: [PATCH] Cygwin: document W10 1803 per-directory case-sensitivity behaviour Signed-off-by: Corinna Vinschen --- winsup/doc/specialnames.xml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/winsup/doc/specialnames.xml b/winsup/doc/specialnames.xml index bc4b0440d..f27836032 100644 --- a/winsup/doc/specialnames.xml +++ b/winsup/doc/specialnames.xml @@ -215,6 +215,39 @@ Read on for more information. + +Case sensitive directories + +Windows 10 1803 introduced a new feature: NTFS directories can be marked +as case-sensitive, independently of the obcaseinsensitive +registry key discussed in the previous section. This new per-directory +case-sensitivity requires setting a flag in the NTFS filesystem header which +is, unfortunately, undocumented. The result is that you have to activate +Windows Subsystem for Linux (WSL), a +feature available via Programs and Features -> +Turn Windows features on or off. You only have to activate +WSL, you don't have to install any actual Linux. After +turning WSL on and performing the compulsory reboot, +case-sensitive directories are activated. + +With WSL activated and starting with Cygwin 3.0, +Cygwin's mkdir system call will automatically create all +directories below the Cygwin installation directory as case-sensitive. +Directories created outside the Cygwin installation tree will be left +alone. However, you can use Cygwin's new tool +with the -C option to control case-sensitivity of +directories on NTFS filesystems. + +Please keep in mind that switching off +case-sensitivity on a directory has a condition attached to it: If +the directory contains two files which only differ in case (e. g., +foo and FOO), Windows +refuses to convert the dir back to case-insensitive. First you have +to fix the filename collision, i. e., you have to rename one of these +files. + + + POSIX devices While there is no need to create a POSIX /dev directory, the directory is automatically created as part of a Cygwin