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

标签 git mercurial permissions file-permissions chmod

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

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

core.filemode -> false
  • 如这里所述:

Can I make git diff ignore permission changes

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

最佳答案

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

如果是执行位让你失望,那么我认为唯一的选择是使用像这样的预提交 Hook :

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

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

要仅对版本化文件执行相同操作,请使用 hg locate,如 Ish's 中所述评论:

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

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

关于git - Mercurial:忽略文件权限/模式(chmod)更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073115/

相关文章:

git - git 中错误的配置选项

pull/推失败后 Git 分离头

GitKraken 与 GitLab 的集成与大学登录

php - Mercurial 更新后更改文件的所有者

permissions - 在脚本中复制 Google 电子表格 + 与相同用户共享

bash - Git Hook : '.git/hooks/pre-commit' : Operation not permitted

windows - 在 Unicode 文件上的 Mercurial 中获得可读的差异显示 (MS Windows)

git - 使用快速导出将 mercurial repo 转换为 git 时至少出现一个未命名的头部错误

c# - 如何使用 C# 代码授予用户启动和停止特定服务的权限

linux - CentOS 上没有 sudo 的 NodeJS 和 npm