Установка масок в Git / Gitolite - PullRequest
15 голосов
/ 17 августа 2011

Я настроил Git и Gitolite, и в какой-то момент я вспоминаю, что видел настройку "umask" в одном из файлов конфигурации.Устанавливает ли это разрешения для всех файлов, которые я синхронизирую с помощью Git?Это именно то, что мне нужно.Где я могу найти его?

1 Ответ

20 голосов
/ 18 августа 2011

Настройки umask в Gitolite предназначены для изменения umask для вновь создаваемых репозиториев (а не для файлов, управляемых в версиях этими репозиториями).
См. gitolite.rc doc :

$REPO_UMASK, восьмеричное, по умолчанию 0077

По умолчанию UMASK, который использует gitolite, все репозитории и их содержимое имеют разрешения rwx------. Люди, которые хотят запустить gitweb, понимают, что это не сработает.

Правильный способ справиться с этим - присвоить этой переменной значение, подобное 0027 (обратите внимание на синтаксис: требуется ведущий 0), а затем заставить пользователя запустить веб-сервер (apache, www-data, что угодно) член группы 'git'.

Если вы уже установили gitolite, то существующие файлы придется исправить вручную (для umask или 0027, это будет chmod -R g+rX). Это связано с тем, что umask влияет только на разрешения для вновь создаваемых файлов, но не для существующих.

Эти настройки аналогичны тем, которые используются при непосредственном создании GIT-репо (без Gitolite):

core.sharedRepository

Когда group (или true), хранилище становится доступным для совместного использования несколькими пользователями в группе (убедитесь, что все файлы и объекты доступны для записи в группе).
Когда all (или world или everybody), хранилище будет доступно для чтения всем пользователям, кроме того, оно будет group-shareable.
. Когда umask (или false), git будет использовать разрешения, сообщенные umask.

См. Также « Как поделиться репозиторием Git с несколькими пользователями на машине? » для получения дополнительной информации.

Когда у вас возникают конфликты между платформами относительно разрешений, у вас также есть возможность « дать команду git игнорировать изменения разрешений для файлов » (git config core.fileMode false).

Обновление: Этот ответ охватывает gitolite 2. С Gitolite 3 настройка изменилась с $REPO_UMASK на $UMASK.

...