當我在 Samba 上否決資源分叉時,為什麼 hg 會阻塞?

當我在 Samba 上否決資源分叉時,為什麼 hg 會阻塞?

我有一些用戶透過 Linux Samba 分享使用 Mercurial,安裝在他們的 Mac 上。

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您不理解(的語法文件連結) 選項。實際上/分隔了兩個規則,並且沒有 Unix 路徑中的 dir 分隔符號含義。

本質上,你有兩個規則,第一個規則是blocking ._*,它匹配._custom.css.i-JdxA5R

相關內容