3

我有一个我可以使用 TortoiseSVN 从运行 Subversion win32 服务的同一台计算机上访问的存储库,并且它已经工作了一段时间。我决定尝试设置 mod_dav_svn 以便能够从其他地方获取它。当我尝试访问它时,我在浏览器中收到此错误:

<D:error>
<C:error/>
<m:human-readable errcode="165005">
Could not open the requested SVN filesystem
</m:human-readable>
</D:error>

...以及日志中的这些错误:

 (20014)Internal error: Expected repository format '3' or '5'; found format '9'
 Could not fetch resource information.  [500, #0]
 Could not open the requested SVN filesystem  [500, #165005]
 Could not open the requested SVN filesystem  [500, #165005]

这是我的 .conf 中的内容:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

DAV svn
SVNPath e:/dev/.svn

我放 /.svn 是因为在我这样做之前,我在客户端上收到了相同的错误文本(但代码为 720002),并且日志显示 Apache 正在寻找不存在的 e:/dev/format,但是e:/dev/.svn/format 可以。

看了这篇,发现我的 subversion 是 1.5.1 和 1.5.5 已经出来了,而且我最近升级了 TortoiseSVN,我想可能有一些不兼容(这可能没有意义,我不知道它是怎么回事工作正常。)所以我下载了 1.5.5,停止服务,复制 DLL 和 EXE,重新启动服务,将新的 .so 文件复制到 Apache 的模块目录,然后重新启动 httpd。没运气。

有什么建议么?这种特殊的“格式 9”的东西似乎很少见……

4

1 回答 1

8

请通过以下解释忍受我,它证明了我对您的问题的假设,并将为您提供一些关于 SVN 工作原理的见解:

在 subversion 中,您有 2 个包含文件的位置:存储库和工作副本。

存储库存储历史记录,您从存储库中签出工作副本中的工作并提交回存储库。

Svnervice 和 apache svn 都允许您公开存储库 Tortoise 允许您从公开的存储库创建工作副本。

根据您发布的内容,我认为您正在尝试公开工作副本而不是存储库(“.svn”文件夹是工作副本的典型,我敢打赌 e:\dev.svn 是一个结帐目录)。

进入服务管理并找出运行 svn 服务的命令行,它应该包含如下字符串:svnserve -d -r {somepath}

{somepath} 是存储库的路径。这是您应该在 apache 的 SVNPath 配置指令中提供的路径。

最后一件事:不允许同时使用 svnserve 和 apache svn 对同一个存储库进行 R/W 访问,它可能会通过将存储库暴露于事务锁的竞争条件来破坏你的存储库

于 2009-02-17T17:07:15.167 回答