我正在尝试在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)
答案 0 :(得分:3)
不要通过网络共享安装subversion存储库,它不会可靠地工作。
file:// access仅用于本地,单用户访问,尤其是测试和调试。当您想要共享存储库时,您确实需要设置一个合适的服务器,并且它并不像您想象的那么困难。阅读“访问存储库”一节,了解有关选择和设置服务器的指南。 [link]
你需要运行SVN服务器,正如David W所说。
答案 1 :(得分:2)
您是否可以控制Windows计算机? 3690端口是否畅通无阻?为什么不在Windows机器上使用svnserve
服务器。然后,您不必安装文件系统。
c:\> svnserve -r C:\path\to\your\repository -d
$ 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文件系统具有错误的所有者或设置了只读位,它仍将失败。