MercurialのLargefilesディレクトリに新しく作成されたファイルのファイル権限を変更するにはどうすればよいですか?

MercurialのLargefilesディレクトリに新しく作成されたファイルのファイル権限を変更するにはどうすればよいですか?

HTTP経由でApacheが提供するいくつかのMercurialリポジトリがあります。ただし、ローカルストレージを検証するために必要な自動化されたテストを実行する専用のユーザーがいます。最近、大容量ファイルサブディレクトリのファイルに対する権限が不足して失敗し始めました.hg

-rw------- 2 www-data www-data 6.3M 2012-01-02 17:23 9358b828fb64feb37d3599a8735320687fa8a3b2

.hgデフォルトのumaskは022でなければなりません。私は次のようにディレクトリにsetgid設定を使用しました。複数のコミッター Wiki ページしかし、これは含まれていません.hg/largefiles。しかし、私が理解したのは、このディレクトリにgidを設定しても問題を解決しません。なぜなら、hgこれらのファイルに対する制限的な権限を設定するからです。ファイルシステムを介してこのリポジトリにアクセスしたい他のユーザーもwww-dataこのグループにあるため、グループに対する追加の読み取り権限で問題を解決するのに十分です。

Mercurialまたはシステムが新しいファイルに対してこの権限を正しく付与するようにどのように説得できますか?

使用中の製品:Mercurial Distributed SCM(バージョン2.1)

答え1

これはMercurialの問題であることが判明し、Mercurial 2.1では簡単に修正できません。私は過ごしました。3つのパッチこの問題を解決するには、Mercurialメーリングリストにアクセスしてください。 1週間以内にMercurial 2.1.1で修正を確認できることを願っています。

問題は、大容量ファイル拡張子が一時ファイル.hg/largefiles/<hash>にデータを書き込んでファイルを生成した後、実際の名前に変更することです。標準を使用して一時ファイルを生成します。tempfile基準寸法Pythonで。600通常、誰も一時ファイルを読み取ることができないため、このモジュールは権限を制限します。 Largefiles拡張はこれを考慮せずにファイル名のみを変更します。

.hg/store私のパッチは、一時ファイルを作成するときの権限を考慮してこの問題を解決します。これにより、Mercurialの残りの部分と一致する大容量ファイルが提供されます。

答え2

Mercurialの回答があるかどうかはわかりませんが、これはMercurialがファイル権限を選択する方法に応じて機能する場合と動作しない可能性がある一般的な回答です。

ファイルシステムでアクセス制御リスト(ACL)を有効にします。 (望むよりこの回答指示のために。 ) 次に、アクセスが必要な他のユーザーまたはグループへのアクセスを許可するように、作業コピーのデフォルト ACL と現在の ACL を設定します。

setfacl -R -d -m group:www-data:rwx /path/to/working/copy
setfacl -R -m group:www-data:rwx /path/to/working/copy

関連情報