8

Mercurialリポジトリのファイルパーミッション/モード(chmod)の変更を無視する方法はありますか?

Gitに似た設定を探しています:

core.filemode -> false
  • ここで説明されているように:

gitdiffに権限の変更を無視させることはできますか

更新:正解はRy4anと彼の答えに対する私の2番目のコメントです。

4

1 に答える 1

6

Mercurialは、ファイルの実行権限のみを追跡し、ユーザー/グループ/その他の方法では追跡しません。したがって、スケルチしようとしているものによっては、実行中のユーザーのを調整する必要がある可能性がありますumaskhg 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 に答える