Я потратил целый день на устранение этой проблемы и сейчас действительно в отчаянии.
Windows 10 - моя основная машина, и на ней я запускаю виртуальную машину Debian, которую использую как полный веб-стек Linux. Виртуальная машина Linux запускает сервер SVN, который сам по себе работает нормально. На моем компьютере с Windows 10 (локальный диск) я могу оформить заказ и зафиксировать. Я делаю это с единственным пользователем, которого я настроил в SVN.
Однако это не мой вариант использования. Я хочу использовать свою Windows IDE для непосредственного управления файлами на сервере Linux. Я получаю доступ к указанным файлам через сетевое сопоставление.
Я установил SAMBA на виртуальную машину Linux, чтобы это стало возможным. И это само по себе тоже работает. Я могу получить доступ к сетевому сопоставлению и полностью контролировать все файлы на нем. Настройка авторизации проста: у меня есть группа @fileadmins, в которую я добавил своего личного пользователя, root и www-данные (для Apache). Однако, чтобы упростить эту ситуацию, пока я делаю все под учетной записью root.
Теперь последняя часть: мне нравится размещать рабочие копии на этом сетевом диске. Таким образом, я могу напрямую управлять файлами, а также совершать коммиты из Windows с помощью TortoiseSVN. Я знаю, что этот сценарий не рекомендуется, но учтите, что я единственный пользователь, и это очень эффективная установка. Я много лет занимаюсь этим для личных проектов на предыдущих серверах.
По какой-то причине я не могу заставить его работать в этот раз. Вот ошибка, которую я получаю, например, при первой проверке репозиториев:
Невозможно переместить 'W: \ jd5.svn \ tmp \ svn-5FDD2730' в 'W: \ jd5.svn \ pristine \ 18 \ 185e98e0088e20d84a5dfaaee60a22f73658439a.svn-base': доступ запрещен.
От людей с подобными проблемами я узнал, что TortoiseSVN создает эти специфичные для SVN файлы «на лету» с определенным набором очень ограниченных разрешений, то есть только для чтения, и с ограниченными разрешениями для файлов Linux.
Поэтому почти все ответы сосредоточены на настройке Samba для принудительного повышения разрешений на вновь создаваемые файлы (например, созданные TortoiseSVN). Вот мой текущий файл конфигурации samba:
[projects]
comment = web apps for users in group *fileadmins*
path = /var/www/apps
valid users = @fileadmins
create mask = 0777
directory mask = 0777
writable = yes
force create mode = 0777
force directory mode = 0777
write list = +@fileadmins
delete readonly = yes
read only = No
Как видите, я намеренно оставляю разрешения широко открытыми, чтобы что-то работало. Если я сейчас из Windows создаю новый текстовый документ вручную на сетевом диске, к нему будут применены указанные выше разрешения, так что это сработает.
Файлы, созданные клиентом TortoiseSVN, в частности те, на которые он жалуется, следующие:
Судя по всему, root имеет полный доступ ко всем файлам, а я использую сетевой диск как пользователь root. Я предполагаю, что TortoiseSVN работает под той же учетной записью.
Единственная странность вышесказанного заключается в том, что некоторые файлы имеют в качестве группы root. Я попытался принудительно настроить группу через настройки Samba, но это привело к проблеме, из-за которой весь диск стал недоступен. В любом случае, поскольку root является владельцем (как пользователь), я не думаю, что это будет иметь значение.
С моей точки зрения, я максимально расширил права доступа, но все равно получаю ошибки разрешений. Мне не терпится узнать, что я упускаю из виду. У меня была такая установка, работающая на нескольких машинах более десяти лет, но я полностью застрял на ней.
У меня тоже есть эта проблема, но я обнаружил, что если я повторяю процесс обновления несколько раз, в конечном итоге все файлы обновляются. Иногда мне тоже нужно сделать уборку.
Эта проблема началась, когда я обновил Tortoise с 1.7.11.xx до 1.9.0.xx