Назад | Перейти на главную страницу

Почему hg задыхается, когда я налагаю вето на вилки ресурсов на Samba?

У меня есть несколько пользователей, использующих Mercurial поверх общих ресурсов Linux Samba, установленных на их компьютерах 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 возвращает ошибку для всей операции с временным файлом.

Вы не поняли синтаксис veto files (ссылка на документ) вариант. В / фактически разделяет два правила и не имеет значения разделителя dir, как в путях unix.

По сути, у вас есть два правила, первое блокирует ._*, что соответствует ._custom.css.i-JdxA5R.