Где я могу получить описание опции `--shared` команды `git init` для Windows?

Я читаю документацию Git о команде git init:

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]
Укажите, что репозиторий Git должен быть общим для нескольких пользователей. Это позволяет пользователям, принадлежащим к одной группе, отправлять данные в этот репозиторий. Когда указано, переменная конфигурации «core.sharedRepository» устанавливается таким образом, что файлы и каталоги в $ GIT_DIR создаются с запрошенными разрешениями. Если не указано, Git будет использовать разрешения, сообщаемые umask(2).

Опция может иметь следующие значения, по умолчанию группа, если значение не задано:

umask (или false)
Использовать разрешения, сообщаемые umask(2). По умолчанию, когда --shared не указан.

group (или true)
Сделайте репозиторий доступным для записи для группы (и g+sx, так как группа git может не быть основной группой всех пользователей). Это используется для ослабления разрешений безопасного значения umask(2). Обратите внимание, что umask по-прежнему применяется к другим битам разрешений (например, если umask равен 0022, использование группы не удалит привилегии на чтение у других (не входящих в группу) пользователей). См. 0xxx, чтобы узнать, как точно указать права доступа к репозиторию.

все (или мир, или все)
То же, что и группа, но сделать репозиторий доступным для чтения всем пользователям.

0xxx 0xxx
это восьмеричное число, и каждый файл будет иметь режим 0xxx. 0xxx переопределит значение umask(2) пользователя (и не только ослабит разрешения, как это делает группа и все). 0640 создаст репозиторий, доступный для чтения группой, но не для записи или доступа для других. 0660 создаст репозиторий, доступный для чтения и записи для текущего пользователя и группы, но недоступный для других.

Эта информация предназначена только для ОС на базе Linux. Я прав? Но как насчет Windows? Я использую Git для Windows. Windows использует ACL вместо umask для работы с разрешениями. :(


person Andrey Bushman    schedule 10.09.2015    source источник
comment
Я почти уверен, что разрешение Windows прозрачно транслируется в разрешения Unix, используемые Git. Так что нет необходимости в специальной версии --shared для Windows. Вы пытались запустить umask в оболочке Bash на своей Windows?   -  person Max Leske    schedule 11.09.2015
comment
Конечно, я пробовал. Код моей попытки можно прочитать здесь: git-for- win.red-bee.ru/index.html?file_permissions.html (извините, эта страница русская, но я надеюсь, что вы сможете понять мой код и результат вывода: umask и --shared ничего не делают в Git Bash для Windows git-for-windows.github.io).   -  person Andrey Bushman    schedule 11.09.2015


Ответы (1)


Это очень печально, но umask и --shared ничего не делают в Git Bash для Windows:

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-rw-rw- вижу -rw-r--r--.

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-rw-rw- вижу -rw-r--r--.

Хорошо, я пытаюсь использовать --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.

Я обновил Git для Windows с 2.4.5 до 2.5.2, но эти проблемы все еще существуют.

UPD

Я получил ответ здесь.

person Andrey Bushman    schedule 11.09.2015