git ignore filemode config не работает


Я использую gitolite git server на сервере ubuntu linux. Я использовал крюк, который будет вызываться при каждом толчке и обновит каталог сервера (который включает исходный код сайта live).

Теперь всякий раз, когда я изменяю что-то на своем локальном компьютере и отправляю изменения на сервер, вызывается крюк, и запрос pull выполняется нормально. Но проблема в том, что файлы, которые были обновлены, теперь имеют измененное разрешение. Например:

rwxrwxr_x (before)
rwx_____x (After)

После нескольких поисков я действительно придумал это решение. Я попробовал это сделать как с моей глобальной конфигурацией git, так и с конкретными настройками конфигурации репозитория. после установки конфигурации, всякий раз, когда я пытаюсь нажать с моего локального компьютера, та же проблема происходит снова, как выше, таким образом, кажется, по какой-то причине, решение не работает.

Есть ли у кого-нибудь идея, что может быть причиной plz? Должен ли я делать что-нибудь дополнительно, кроме настроек конфигурации? Любые предложения приветствуются. Заранее спасибо.

1 3

1 ответ:

КакОП рана подтверждает в комментариях, если крюк начинается с:

umask 002

Он будет генерировать файлы с правильной защитой.


Алан Томпсон упоминает:

core.filemode влияет только на диффы против вашего рабочего dir, а не на диффы между 2 коммитами в репо.
Таким образом, если вы уже зафиксировали различные режимы файлов, вам придется использовать filter-branch, как в "Могу ли я сделать git diff игнорировать разрешение изменения ".

git filter-branch -f --tree-filter 'find * -type f | xargs chmod 644 ' -- --all