Mercurial: игнорировать изменения разрешения / режима файла (chmod)

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

Я ищу настройку, похожую на Git:

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

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

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

1 ответов


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

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

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

это удаляет execute из всех файлов перед фиксацией.

сделать то же самое только в версионных файлах используйте hg locate как указано в Иш комментарий:

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

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