Предотвратить Git изменение прав доступа
Когда я вытаскиваю изменения из своих репозиториев, Git изменяем права доступа к файлу (фактически, он меняет разрешение группы write
).
Если я прав, Git должен отслеживать только исполняемый бит, и это в любом случае можно удалить, установив core.filemode
в false.
Но, хотя для файла файла установлено значение false (в локальном, глобальном и пользовательском), когда я тяну, разрешение write
постоянно изменяется.
Я мог бы использовать git -hooks для reset правильного chmod, но это некоторые накладные расходы, и я бы предпочел, если бы просто попросить Git полностью игнорировать изменение режима файла.
Кто-нибудь знает, как достичь этого?
Ответы
Ответ 1
Один параметр конфигурации, который может помочь здесь, - core.sharedRepository
, представленный в сообщении блога " Сохранение группы Запись на Git Объектах в совместном репозитории:
Решение оказалось довольно простым.
В файле .git/config
я добавил строку, которая гласит: "sharedRepository = group
", например:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
sharedRepository = group
Затем были созданы новые файлы в .git/objects
с соответствующими разрешениями для групповой записи.
(Тем не менее, обратите внимание, что новые файлы принадлежат группе из основной группы учетной записи пользователя, через которую был получен push-запрос. Если пользователи, сотрудничающие с проектом, имеют разные первичные группы, и если эти пользователи не разделяют членство в этом наборе групп, вы все равно можете столкнуться с проблемами.)
Убедитесь, что значение вашего umask
:
Пример: 0660
сделает репо для чтения и записи для владельца и группы, но недоступен для других (эквивалентно группе, если только umask
равно, например, 0022
).
Ответ 2
Я использую это выполнить команду как пользователь, у которой есть разрешения, которые вы хотите сохранить:
sudo -u user command
В этом случае это может быть:
sudo -u www-data git pull
www-data
является пользователем apache по умолчанию по Ubuntu как минимум.
Это позволяет изменять разрешения. Я использую его при обновлении репозиториев git на моем VPS, сохраняя при этом права доступа к файлам для пользователя веб-сервера.