1

我正在阅读有关该命令的Git 文档:git init

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]
指定 Git 存储库将在多个用户之间共享。这允许属于同一组的用户推送到该存储库。指定后,设置配置变量“core.sharedRepository”,以便使用请求的权限创建 $GIT_DIR 下的文件和目录。如果未指定,Git 将使用 umask(2) 报告的权限。

该选项可以具有以下值,如果没有给出值,则默认为 group:

umask(或 false)
使用 umask(2) 报告的权限。未指定 --shared 时的默认值。

group (或 true)
使存储库组可写,(和 g+sx,因为 git 组可能不是所有用户的主要组)。这用于放宽其他安全 umask(2) 值的权限。请注意,umask 仍然适用于其他权限位(例如,如果 umask 为 0022,则使用组不会删除其他(非组)用户的读取权限)。有关如何准确指定存储库权限的信息,请参见 0xxx。

all(或 world 或 everyone)
与组相同,但使所有用户都可以读取存储库。

0xxx 0xxx
是一个八进制数,每个文件的模式都是 0xxx。0xxx 将覆盖用户的 umask(2) 值(并且不仅像 group 和 all 那样放松权限)。0640 将创建一个可组读取的存储库,但不可组写入或其他人无法访问。0660 将创建一个对当前用户和组可读和可写,但其他人无法访问的 repo。

此信息仅适用于基于 Linux 的操作系统。我对吗?但是 Windows 呢?我为 Windows 使用 Git。Windows 使用 ACL 而不是 umask 来处理权限。:(

4

1 回答 1

0

这是非常可悲的,但在Windows 的 Git Bash 中umask什么--shared也不做:

Developer@BUSHCOMP MINGW64 /d/temp/000
$ ls -l readme.txt
-rw-r--r-- 1 Developer Domain users 0 Sep 10 16:44 readme.txt

Developer@BUSHCOMP MINGW64 /d/temp/000
$ chmod a+rw readme.txt

Developer@BUSHCOMP MINGW64 /d/temp/000
$ ls -l readme.txt
-rw-r--r-- 1 Developer Domain users 0 Sep 10 16:44 readme.txt

readme.txt 的权限没有改变:我看到-rw-r--r--的是-rw-rw-rw-.

Developer@BUSHCOMP MINGW64 /d/temp/000
$ chmod 666 readme.txt

Developer@BUSHCOMP MINGW64 /d/temp/000
$ ls -l readme.txt
-rw-r--r-- 1 Developer Domain users 0 Sep 10 16:44 readme.txt

readme.txt 的权限没有再次更改:我看到-rw-r--r--的是-rw-rw-rw-.

好的,我尝试使用--shared=0666

Developer@BUSHCOMP MINGW64 /d/temp/000/111
$ git init --shared=0666
Bare repository is initialized Git в D:/temp/000/111/.git/

Developer@BUSHCOMP MINGW64 /d/temp/000/111 (master)
$ echo 2>test.txt


Developer@BUSHCOMP MINGW64 /d/temp/000/111 (master)
$ git add test.txt

Developer@BUSHCOMP MINGW64 /d/temp/000/111 (master)
$ git commit -m "Test"
[master (root commit) 0d01d64] Test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt

Developer@BUSHCOMP MINGW64 /d/temp/000/111 (master)
$ ls -l test.txt
-rw-r--r-- 1 Developer Domain users 0 Sep 10 17:10 test.txt

At this case I see `-rw-r--r--` instead of `-rw-rw-rw-` also.

我已经将适用于 Windows 的 Git 从 2.4.5 更新到 2.5.2,但这些问题仍然存在。

UPD

我在这里得到了答案。

于 2015-09-11T07:50:40.943 回答