
Мне нужно, чтобы файлы, созданные git checkout
командой, имели специальные разрешения.
Даже при core.sharedrepository=0777
настройке git создает рабочие файлы дерева с правами доступа 0644. Но я хочу, чтобы они были не ниже 0664, чтобы кто-то из группы мог писать в них (было бы очень хорошо указать пользовательскую группу владельцев)
Рекурсивное применение chown/chmod может сработать, но это попахивает крайней мерой и пустой тратой ресурсов.
решение1
Не используйте только git для управления правами доступа к файлам установленного дерева.
git — однопользовательский. Он не отслеживает владельца файла и разрешения, достаточные для защиты многопользовательской системы. Даже если бы простое дерево core.sharedrepository
с одним пользователем было бы достаточным для вашего варианта использования, у вас возникли трудности с тем, чтобы заставить его делать то, что вам нужно. Возможно, он все еще использует значение по умолчанию umask
?
Рассмотрите настоящий формат архива, либо систему пакетов программного обеспечения, либо общий архив, такой как tar. Получите правильные разрешения в скриптах, которые генерируют архивы.
Или запуск скрипта исправления разрешений не так уж и плох. При желании проверьте разрешения перед их изменением, чтобы избежать ненужных изменений в метаданных файла.
Несвязанное соображение: если это дерево будет обновляться, учтите, что git не синхронизирует файлы, а объединяет истории. Понятьэти правила развертывания gitчтобы понять, почему написание сценариев, git pull
вероятно, неправильно.