подрывная деятельность через cifs не работает - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь использовать Subversion на компьютере с Linux, репозиторий находится на сервере Microsoft sbs2008.(Я могу получить доступ к хранилищу с компьютера с Microsoft Windows 7.) Кто-нибудь может сказать мне, как заставить его работать?

Это то, что я сделал.

# sudo mount -t cifs -v -o credentials=~/Files/server-mount-credentials,uid=richard,nocase,nounix,nosuid  //sbs2008/local ~/Files/server-mount/

# svn commit -m ""

Adding         file1
Sending        file2
Transmitting file data ........svn: Commit failed (details follow):
svn: database is locked

Straceпоказывает:

open("/home/rdelorenzi/Files/server-mount/svn_repository/db/rep-cache.db", O_RDWR|O_CREAT|O_LARGEFILE, 0644) = 12

...

_llseek(12, 162816, [162816], SEEK_SET) = 0
read(12, "\n\0\0\0\20\1 \0\1 \1N\1|\1\252\1\330\2\6\0024\2b\2\220\2\276\2\354\3\32"..., 1024) = 1024

_llseek(12, 100352, [100352], SEEK_SET) = 0
read(12, "\n\0\0\0\24\0i\0\0i\0\227\0\305\0\363\1!\1O\1}\1\253\1\331\2\7\0025\2c"..., 1024) = 1024
_llseek(12, 52224, [52224], SEEK_SET)   = 0
read(12, "\n\0\0\0\24\0k\0\0\231\0\307\0\365\1#\1Q\1\177\1\255\1\333\2\t\0027\2d\2\222"..., 1024) = 1024

fcntl64(12, F_SETLK64, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}, 0xbf8e15e8) = 0
fcntl64(12, F_SETLK64, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}, 0xbf8e15e8) = -1 EACCES (Permission denied)

Ответы [ 4 ]

3 голосов
/ 15 марта 2012

Не монтируйте репозиторий Subversion через сетевой ресурс, он просто не будет работать надежно.

file: // доступ предназначен только для локального однопользовательского доступа, особенно для тестирования и отладки.Если вы хотите открыть общий доступ к хранилищу, вам действительно необходимо настроить надлежащий сервер, и это не так сложно, как вы думаете.Прочтите раздел «Доступ к репозиторию» для получения рекомендаций по выбору и настройке сервера. [ссылка]

Вам необходимо запустить сервер SVN, как отмечает Дэвид В.

2 голосов
/ 15 марта 2012

У вас есть контроль над машиной Windows?Порт 3690 разблокирован?Почему бы не использовать svnserve сервер на компьютере с Windows.Тогда вам не нужно монтировать файловые системы.

На вашем Windows-компьютере:

 c:\> svnserve -r C:\path\to\your\repository -d

На вашем Linux Box

$ svn co svn://sbs2008/trunk

Другая возможность - использовать VisualSVN Server на вашем компьютере с Windows.Затем вы можете использовать httpd Apache для доступа к вашему репозиторию:

$ svn co http://sbs2008/svn/trunk

Сервер VisualSVN не является открытым исходным кодом, но он бесплатный, если вам не нужны дополнительные вещи, такие как подключения Windows Active Directory.*

1 голос
/ 15 марта 2012

Хорошо. Давайте представим, что я не знаю и не могу понять mount команду и параметры.

В этом случае я просто спрашиваю:

Что именно вы хотите сделать? Работать напрямую с файлами репозитория (не файлы в репо , а файлы ) ?! По каким причинам?!

Subversion имеет Клиент-серверная архитектура , клиент связывается с сервером, который скрывает от клиента детали обработки физического бэкэнда репозитория

Сетевой уровень Subversion является абстрагированным, что означает, что клиенты Subversion демонстрируют одинаковое общее поведение независимо от того, с каким сервером они работают. Будь то протокол HTTP (http://) с HTTP-сервером Apache или пользовательский протокол Subversion (svn: //) с svnserve), базовая модель сети одинакова.

Вы, как клиент-человек, работаете с физическим представлением Репозитория (состояние репо) в Рабочей копии , логическим представлением из Репозиторием , предоставляемые парой клиент и сервер; svn-client как клиент-программа взаимодействует с хранилищем сервером, обрабатывая хранилище, используя любой из выставленных сервером access-protocol и сервер позже работает с хранилищем на самом низком уровне (чтение записывать файлы)

0 голосов
/ 14 марта 2012

Это не столько ответ, сколько несколько вопросов для размышления.

Почему вы предполагаете, что это сработает?Драйвер файловой системы cifs предоставляет файловую систему NTFS таким образом, что в худшем случае вы можете только читать файлы.Функциональность, предоставляемая драйвером cifs, должна иметь соответствующую функциональность в конце NTFS.

Таким образом, если необходимая функциональность SVN либо не реализована, либо не поддерживается, у вас вполне может возникнуть проблемавот так.

Я бы посоветовал взглянуть на документацию cifs и проверить наличие известных ограничений или способов настройки драйвера, чтобы, возможно, предложить больше функциональных возможностей.проверить ACL экспортируемой файловой системы NTFS.Если эта операция поддерживается драйвером cifs и должна работать, она все равно не будет работать, если у файловой системы NTFS неправильный владелец или установлен бит только для чтения.

...