Setting up git running under WSL

03 March 2020

I recently ran into a problem running git from inside a WSL (Windows Subsystem Linux) command prompt to manage a git repository stored in a folder outside the WSL file system. In my case that location was C:\projects but I believe the problem would exist for any location outside the WSL directory.

The error message looked like this when I tried to git clone:

error: chmod on /mnt/c/projects/<repo>/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'

I could overcome the issue by using sudo but other git operations would fail when I tried to use the local repository. The fix (detailed here on askubuntu) was to remount the C:\ drive with the metadata flag enabled to allow chmod/chown commands to work on the C:\ partition.

sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata

More details are in the Microsoft release notes for setting default file permissions in the WSL partition and help configuring other mount options.

Update 5/12/2020

An outcome of that change was that I was seeing file permissions changes from 644 to 755 when I edited a file in Visual Studio or any Windows application. To fix this, make sure that the core.filemode is set to false inside each git repository where you see the permissions being changed - git config core.filemode false.