8

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

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

core.filemode -> false
  • 如此处所述:

我可以让 git diff 忽略权限更改吗

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

4

1 回答 1

6

Mercurial 仅跟踪文件的执行权限,而不是以用户/组/其他方式跟踪文件的执行权限,就像一个位一样,因此根据您要压制的内容,您可能真的需要调整umask正在运行的用户的hg update权限

如果是执行位吸引您,那么我认为唯一的选择是使用预提交挂钩,例如:

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

也就是说,在提交之前从所有文件中删除执行。

要仅对版本化文件执行相同操作,请使用Ish评论hg locate中指出的:

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

但请注意,这在某些情况下可能会失败。例如,在重命名 ( hg rename) 期间,重命名之前和重命名之后的文件都将使用hg locate. 因此,钩子将无法chmod使用文件的旧名称,并且提交将作为一个整体失败。这可以通过暂时禁用钩子或在/bin/true钩子结束时调用来“修复”。

于 2011-02-22T04:51:39.830 回答