我有一些用戶透過 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
。