Как принудительно задать пользовательские разрешения для файлов, созданных командой git checkout?

Как принудительно задать пользовательские разрешения для файлов, созданных командой git checkout?

Мне нужно, чтобы файлы, созданные git checkoutкомандой, имели специальные разрешения.

Даже при core.sharedrepository=0777настройке git создает рабочие файлы дерева с правами доступа 0644. Но я хочу, чтобы они были не ниже 0664, чтобы кто-то из группы мог писать в них (было бы очень хорошо указать пользовательскую группу владельцев)

Рекурсивное применение chown/chmod может сработать, но это попахивает крайней мерой и пустой тратой ресурсов.

решение1

Не используйте только git для управления правами доступа к файлам установленного дерева.

git — однопользовательский. Он не отслеживает владельца файла и разрешения, достаточные для защиты многопользовательской системы. Даже если бы простое дерево core.sharedrepositoryс одним пользователем было бы достаточным для вашего варианта использования, у вас возникли трудности с тем, чтобы заставить его делать то, что вам нужно. Возможно, он все еще использует значение по умолчанию umask?

Рассмотрите настоящий формат архива, либо систему пакетов программного обеспечения, либо общий архив, такой как tar. Получите правильные разрешения в скриптах, которые генерируют архивы.

Или запуск скрипта исправления разрешений не так уж и плох. При желании проверьте разрешения перед их изменением, чтобы избежать ненужных изменений в метаданных файла.


Несвязанное соображение: если это дерево будет обновляться, учтите, что git не синхронизирует файлы, а объединяет истории. Понятьэти правила развертывания gitчтобы понять, почему написание сценариев, git pullвероятно, неправильно.

Связанный контент