通过cifs颠覆是行不通的

时间:2012-03-14 16:47:12

标签: windows linux svn cifs

我正在尝试在linux机器上使用subversion,该存储库位于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 个答案:

答案 0 :(得分:3)

不要通过网络共享安装subversion存储库,它不会可靠地工作。

  

file:// access仅用于本地,单用户访问,尤其是测试和调试。当您想要共享存储库时,您确实需要设置一个合适的服务器,并且它并不像您想象的那么困难。阅读“访问存储库”一节,了解有关选择和设置服务器的指南。 [link]

你需要运行SVN服务器,正如David W所说。

答案 1 :(得分:2)

您是否可以控制Windows计算机? 3690端口是否畅通无阻?为什么不在Windows机器上使用svnserve服务器。然后,您不必安装文件系统。

在Windows计算机上:

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

在Linux Box上

$ svn co svn://sbs2008/trunk

另一种可能性是在Windows框中使用VisualSVN Server。然后,您可以使用Apache的httpd访问您的存储库:

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

VisualSVN Server不是开源的,但只要您不需要Windows Active Directory连接等高级内容,它就是免费的。

答案 2 :(得分:1)

好。让我们想象一下我不知道并且无法理解mount命令和参数。

在这种情况下,我只想问:

  

你究竟想做什么?直接使用存储库文件(不是文件在repo中,而是文件)?!出于哪些原因?!

Subversion有Client-Server architecture,客户端与服务器通信,这隐藏了处理物理存储库后端的客户端细节

  

Subversion的网络层是抽象的,这意味着Subversion客户端表现出相同的一般行为,无论他们操作什么类型的服务器。无论是使用Apache HTTP Server说HTTP协议(http://)还是使用svnserve说自定义Subversion协议(svn://),基本网络模型都是相同的。

作为客户 - 人,您使用工作副本逻辑表示中的物理表示存储库(状态代表)< em> Repository ,由一对客户端和服务器提供; svn-client作为客户端程序与 repository 服务器通信,处理存储库,使用服务器 access-protocols 公开的任何服务器,服务器稍后在尽可能低的层使用存储库(读写文件)

答案 3 :(得分:0)

这不是一个答案,而是你可以考虑的一些问题。

为什么你认为这会起作用? cifs文件系统驱动程序以这样的方式公开NTFS文件系统,在最坏的情况下,您只能读取文件。 cifs驱动程序公开的功能必须在NTFS结尾处具有匹配的功能。

因此,如果SVN所需的功能未实现或不受支持,您最终可能会遇到类似这样的问题。

我建议查看cifs文档,检查已知的限制或调整驱动程序的方法,或许提供更多功能。

当然,您需要检查导出的NTFS文件系统的ACL。如果cifs驱动程序支持此操作并且该操作应该有效,则如果NTFS文件系统具有错误的所有者或设置了只读位,它仍将失败。

相关问题