Por que o hg engasga quando veto bifurcações de recursos no Samba?

Por que o hg engasga quando veto bifurcações de recursos no Samba?

Tenho alguns usuários usando compartilhamentos Mercurial sobre Linux Samba, montados em seus Macs.

O servidor Samba tem as seguintes regras de veto (bem discutidas aqui neste site e em outros lugares) para evitar que Macs criem forks de recursos, que causam estragos em todo tipo de coisa, especialmente em diretórios de desenvolvedores:

veto files = /._*/.DS_Store/
delete veto files = yes

O problema é que às vezes, aleatoriamente, o Mercurial irá engasgar com este erro:

$ 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'

Por que o Mercurial está tentando criar uma bifurcação de recursos dentro de seu próprio armazenamento de dados?

Se eu comentar a regra de veto, o commit será bem-sucedido, mas não deixará tal bifurcação de recursos no servidor. Portanto, parece ser uma bifurcação de recurso temporário ou um arquivo temporário.

Como posso evitar que o hg o crie, ou ignore o erro, ou faça o Samba engoli-lo silenciosamente?

Editar: suponho (mas não tenho certeza) que hg está criando um arquivo temporário chamado custom.css.i-JdxA5R e, por algum motivo, o OS X tenta anexar uma bifurcação de recursos a ele. Quando isso falha, como é vetado pelo Samba, o OS X retorna um erro para toda a operação do arquivo temporário.

Responder1

Você não entendeu a sintaxe do veto files(link do documento) opção. Na /verdade, separa duas regras e não tem o significado do separador dir como nos caminhos unix.

Essencialmente, você tem duas regras, a primeira bloqueando ._*, que corresponde a ._custom.css.i-JdxA5R.

informação relacionada