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
на конце крючка.