开发者

Mercurial: Ignore file permission / mode (chmod) changes

Is there a way to ignore file permission / mode (chmod) changes fo开发者_运维百科r a Mercurial repository?

I'm looking for a setting similar to Git's:

core.filemode -> false
  • as described here:

Can I make git diff ignore permission changes

Update: the correct answer is Ry4an's together with my second comment to his answer.


Mercurial only tracks the execute permission on files and not in a user/group/other way, just as a single bit, so depending what you're trying to squelch it's possible you really need to just adjust the umask of the user running hg update'

If it is the execute bit that's getting you, then I think the only option is to use a pre-commit hook like:

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

that, removes execute from all files before committing.

To do the same only on versioned files, use hg locate as pointed out in Ish's comment:

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

Note, though, that this can fail under certain circumstances. For example during renames (hg rename) both the file before the rename and after the rename will be recorded as versioned using hg locate. Therefore the hook will fail to chmod the old name of the file and the commit will fail as a whole. This can be "fixed" by either disabling the hook temporarily or by calling /bin/true at the end of the hook.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜