Mac にマウントされた Linux Samba 共有経由で Mercurial を使用しているユーザーが数人います。
Samba サーバーには、Mac がリソース フォークを作成しないようにするための次の拒否ルールがあります (このサイトでも他の場所でも十分に説明されています)。リソース フォークは、特に開発者のディレクトリでさまざまなことに大混乱を引き起こします。
veto files = /._*/.DS_Store/
delete veto files = yes
問題は、時々、ランダムに、Mercurial が次のエラーで停止することです:
$ hg ci
trouble committing stylesheets/custom.css!
transaction abort!
rollback completed
abort: Permission denied: '/Volumes/xxx/yyy/.hg/store/data/stylesheets/._custom.css.i-JdxA5R'
Mercurial が独自のデータ ストア内にリソース フォークを作成しようとしているのはなぜですか?
拒否ルールをコメントすると、コミットは成功しますが、サーバー上にそのようなリソース フォークは残りません。そのため、一時的なリソース フォーク、または一時ファイルのリソース フォークであるように見えます。
hg がそれを作成しないようにするには、またはエラーを無視するには、または Samba がそれを黙って処理するようにするにはどうすればよいでしょうか?
編集: おそらく (確信はありませんが)、hg は custom.css.i-JdxA5R という一時ファイルを作成し、何らかの理由で OS X はそれにリソース フォークを添付しようとします。これが失敗すると、Samba によって拒否され、OS X は一時ファイル操作全体に対してエラーを返します。
答え1
veto files
(の構文を理解していませんでしたドキュメントリンク) オプション。 は/
実際には 2 つのルールを区切りますが、UNIX パスのような dir 区切りの意味はありません。
基本的に、そこには 2 つのルールがあり、最初のルールは をブロックし._*
、これは に一致します._custom.css.i-JdxA5R
。