windows linux 的子系统在 git 存储库中保留文件属性

windows subsystem for linux preserve file attributes in git repo

在 windows10 和任何 linux 上的 wsl 之间共享 git 存储库时,来自 wsl 的所有文件 added/changed 都会获得 rw-rw-rw 属性,即使我在添加之前明确地做了一个 chmod ug+x file.py 。如果您在 wsl 中执行 ls -l,则无论如何,所有文件都会以 rwxrwxrwx 列出。

在 linux 我必须在每个 pull/clone

上做一个 find . -name "*.py" -exec chmod ug+x {} \;

解决此问题的最佳方法是什么? WSL中有一些设置吗? git 钩子?

我假设您的 git 存储库位于 windows 文件系统中的某处,即 /mnt/c/path/to/git。在这种情况下,WSL 按顺序设置所有权限

to best reflect the Windows permissions. (FAQ)

目前无法在稳定版本中更改此行为。但是随着 insider build 17063 WSL 团队通过实现 DrvFs 支持来解决这个问题,

allows setting the owner and mode of files using chmod/chown, and also the creation of special files such as fifos, unix sockets and device files. (Release Notes)