Mercurial: игнорировать изменения прав доступа к файлу / режима (chmod) - PullRequest
8 голосов
/ 22 февраля 2011

Есть ли способ игнорировать изменения прав доступа к файлу / режима (chmod) для хранилища Mercurial?

Я ищу настройки, аналогичные настройкам Git:

core.filemode -> false
  • как описано здесь:

Могу ли я сделать git diff игнорировать изменения разрешений

Обновление: правильный ответ Ry4an вместе с моим вторым комментарием к его ответу.

1 Ответ

6 голосов
/ 22 февраля 2011

Mercurial отслеживает только разрешение на выполнение для файлов, а не для пользователя / группы / другим способом, просто как один бит, поэтому в зависимости от того, что вы пытаетесь подавить, возможно, вам действительно нужно просто настроить umaskпользователь, запускающий hg update '

Если вас получает бит выполнения, то я думаю, что единственный вариант - использовать хук предварительной фиксации, например:

[hooks]
pre-commit = find $(hg root) -type f -print0 | xargs -0 chmod a-x

, что,удаляет выполнение из всех файлов перед фиксацией.

Чтобы сделать то же самое только с версионными файлами, используйте hg locate, как указано в Ish's комментарий:

[hooks]
pre-commit = hg locate --print0 | xargs -0 chmod a-x

ПримечаниеТем не менее, это может не получиться при определенных обстоятельствахНапример, во время переименования (hg rename) файл до переименования и после переименования будет записан как версионный с использованием hg locate.Следовательно, ловушка не сможет chmod старое имя файла и фиксация завершится неудачей в целом.Это можно исправить, временно отключив перехват или вызвав /bin/true в конце перехвата.

...