有没有一种方法可以忽略Mercurial存储库的文件权限/模式(chmod)更改?我正在寻找类似于Git的设置:
core.filemode -> false
- 如此描述:
更新:正确的答案是Ry4an的,加上我的第二条评论。
core.filemode -> false
更新:正确的答案是Ry4an的,加上我的第二条评论。
Mercurial只跟踪文件的执行权限而不是按用户/组/其他方式,仅作为一个单一的位,因此根据您尝试压制的内容,您可能确实需要调整运行hg update
的用户的umask
。
如果是执行位导致的问题,那么我认为唯一的选项是使用类似于预提交挂钩的东西:
[hooks]
pre-commit = find $(hg root) -type f -print0 | xargs -0 chmod a-x
在提交之前,删除所有文件的执行权限。
如果只想对版本化的文件进行操作,请使用hg locate
,正如Ish的评论所指出的那样:
[hooks]
pre-commit = hg locate --print0 | xargs -0 chmod a-x
需要注意的是,在某些情况下,这种方法可能会失败。例如,在重命名(hg rename
)期间,使用hg locate
将记录重命名前和重命名后的文件作为版本控制文件。因此,钩子将无法对旧文件名进行chmod
操作,并且提交将完全失败。可以通过暂时禁用钩子或在钩子末尾调用/bin/true
来“修复”此问题。
hg status
仍然显示修改过的文件,hg diff
没有显示任何差异,hg diff --git
总是会说权限已更改(为当前权限-无论旧权限和新权限是什么)我该怎么办? - user621495pre-commit = hg locate --print0 | xargs -0 chmod a-x
- lsh