Mercurial:忽略文件权限/模式(chmod)更改

时间:2011-02-22 01:20:36

标签: git mercurial permissions file-permissions chmod

有没有办法忽略Mercurial存储库的文件权限/模式(chmod)更改?

我正在寻找类似于Git的设置:

core.filemode -> false
  • 如下所述:

Can I make git diff ignore permission changes

更新:正确答案是Ry4an和我对他答案的第二次评论。

1 个答案:

答案 0 :(得分:6)

Mercurial只跟踪文件的执行权限,而不是用户/组/其他方式,只是作为一个位,所以根据你想要压制的内容,你可能真的需要调整{{1}运行umask'

的用户

如果它是你的执行位,那么我认为唯一的选择是使用预提交钩子,如:

hg update

,在提交之前删除所有文件中的执行。

要仅对版本化文件执行相同操作,请使用Ish's评论中指出的[hooks] pre-commit = find $(hg root) -type f -print0 | xargs -0 chmod a-x

hg locate

但请注意,在某些情况下这可能会失败。例如,在重命名([hooks] pre-commit = hg locate --print0 | xargs -0 chmod a-x )期间,重命名之前和重命名之后的文件都将使用hg rename记录为版本。因此,挂钩将无法hg locate文件的旧名称,并且提交将作为一个整体失败。这可以通过暂时禁用挂钩或在挂钩结束时调用chmod来“修复”。