Наша компания, занимающаяся веб-разработкой, имеет Linux-сервер с общим ресурсом Samba, который сотрудники используют для разработки веб-сайтов. В общей папке Samba есть многочисленные каталоги, которые служат корнями документов для веб-сервера (папка client / website.domain на общей папке соответствует http: //some.website.local/). У каждого проекта есть репозитории, управляемые Git или Subversion. Клиенты Windows и Mac подключаются к общему ресурсу Samba. На машинах Windows нет проблем с работой с общим ресурсом. Однако клиенты Mac имеют.
С момента нашего недавнего перехода на Git я начал замечать закономерность в ошибках. Иногда при выполнении фиксации или обновления в Subversion клиент SVN давился и выдавал довольно неопределенную ошибку. Рабочая копия будет заблокирована, и единственный способ снова работать с этой рабочей копией - это размонтировать и снова подключить ее. Только тогда мы сможем запустить svn-очистку и снова вернуть рабочую копию в рабочее состояние.
То же самое сейчас происходит с Git. Иногда, когда кто-то выполняет извлечение, все файлы обновляются, но индексный файл не может быть записан. Таким образом, клиент Git считает, что изменения, только что извлеченные из удаленного репо, на самом деле являются неустановленными изменениями, внесенными пользователем, поскольку индексный файл не был обновлен, он считает, что он все еще отражает более старую копию репо.
Итак, и SVN, и Git работают с метаданными (файлами, хранящимися в .svn и .git). Это те файлы, которые часто каким-то образом блокируются. Это никогда не происходит с обычными файлами. Мы пробовали многочисленные настройки в файле smb.conf на машине Linux, касающиеся блокировок и других связанных настроек, но все равно безрезультатно. Это начинает нас немного сбивать с толку.
У кого-нибудь был подобный опыт? Пока гуглил как сумасшедший, но ничего не нашел.