I've had a repo that I would access, using TortoiseSVN, from only the same computer on which the Subversion win32 service was running, and it's been working for a while now. I decided to try to set up mod_dav_svn to be able to get at it from elsewhere. When I try to access it, I get this error in the browser:
我使用了一个repo,我可以访问它,使用的是一个由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>
...and these errors in the log:
…这些在日志中的错误:
(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]
Here's what's in my .conf:
这是我的。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
and
和
DAV svn
SVNPath e:/dev/.svn
I put the /.svn because before I did that, I was getting the same error text on the client (but with code 720002) and the log showed Apache was looking for e:/dev/format, which doesn't exist, but e:/dev/.svn/format does.
我把/。因为在此之前,我在客户机上获得了相同的错误文本(但是使用代码720002),日志显示Apache正在寻找e:/dev/format,这是不存在的,但是e:/dev/。svn /格式。
I read this, and noticing that my subversion was 1.5.1 and 1.5.5 was out, and that I had upgraded TortoiseSVN recently, I thought that maybe there was some incompatibility (this may not make sense, I don't know how it works exactly.) So I downloaded 1.5.5, stopped the service, copied the DLLs and EXEs overtop, restarted the service, copied the new .so files to Apache's modules directory, and restarted httpd. No luck.
我读了这篇文章,注意到我的subversion是1.5.1和1.5.5,而且我最近升级了龟甲,我认为可能有一些不兼容(这可能没有意义,我不知道它是如何工作的)。所以我下载了1.5.5,停止了服务,复制了dll和EXEs overtop,重新启动了服务,复制了新的,所以文件到Apache的模块目录,重新启动httpd。没有运气。
Any suggestions? This particular 'format 9' thing seems to be rare...
有什么建议吗?这种特殊的“格式9”似乎很罕见……
1 个解决方案
#1
6
please bear with me through the following explantion, it justifies my hypothesis on your problem and will give you some insights as to how SVN works:
请耐心听我的解释,它证明了我对你的问题的假设,并会给你一些关于SVN如何工作的见解:
In subversion you have 2 places containing files: the repository and the working copy.
在subversion中,您有两个包含文件的位置:存储库和工作副本。
The repository stores the history, you checkout from the repository in a working copy work there and commit back to the repository.
存储库存储历史记录,您从存储库中签出工作副本并提交到存储库。
Svnervice and apache svn both allow you to expose a repository Tortoise allows you to create working copies from an exposed repository.
Svnervice和apache svn都允许您公开存储库乌龟,允许您从公开的存储库中创建工作副本。
From what you posted I think you are trying to expose a working copy instead of a repository (the ".svn" folder is typical of a working copy and I bet the e:\dev.svn is a checkout directory).
从您发布的内容来看,我认为您是在尝试公开一个工作副本而不是存储库(“。”svn“文件夹是典型的工作副本,我打赌e:\dev。svn是一个签出目录。
go in the service management and find out the command line which runs the svn service it should contain a string like the following : svnserve -d -r {somepath}
进入服务管理并找到运行svn服务的命令行,它应该包含如下的字符串:svnserve -d -r {somepath}
The {somepath} is the path to your repository. This is the path you should provide in the SVNPath configuration directive of apache.
{somepath}是通往存储库的路径。这是您应该在apache的SVNPath配置指令中提供的路径。
One last thing : do NOT allow R/W access to the same repository using both svnserve and apache svn, it will probably corrupt your repository by exposing it to race conditions on the transaction locks
最后一件事:不要让R/W使用svnserve和apache svn访问同一个存储库,它可能会使您的存储库暴露在事务锁的竞争条件下。
#1
6
please bear with me through the following explantion, it justifies my hypothesis on your problem and will give you some insights as to how SVN works:
请耐心听我的解释,它证明了我对你的问题的假设,并会给你一些关于SVN如何工作的见解:
In subversion you have 2 places containing files: the repository and the working copy.
在subversion中,您有两个包含文件的位置:存储库和工作副本。
The repository stores the history, you checkout from the repository in a working copy work there and commit back to the repository.
存储库存储历史记录,您从存储库中签出工作副本并提交到存储库。
Svnervice and apache svn both allow you to expose a repository Tortoise allows you to create working copies from an exposed repository.
Svnervice和apache svn都允许您公开存储库乌龟,允许您从公开的存储库中创建工作副本。
From what you posted I think you are trying to expose a working copy instead of a repository (the ".svn" folder is typical of a working copy and I bet the e:\dev.svn is a checkout directory).
从您发布的内容来看,我认为您是在尝试公开一个工作副本而不是存储库(“。”svn“文件夹是典型的工作副本,我打赌e:\dev。svn是一个签出目录。
go in the service management and find out the command line which runs the svn service it should contain a string like the following : svnserve -d -r {somepath}
进入服务管理并找到运行svn服务的命令行,它应该包含如下的字符串:svnserve -d -r {somepath}
The {somepath} is the path to your repository. This is the path you should provide in the SVNPath configuration directive of apache.
{somepath}是通往存储库的路径。这是您应该在apache的SVNPath配置指令中提供的路径。
One last thing : do NOT allow R/W access to the same repository using both svnserve and apache svn, it will probably corrupt your repository by exposing it to race conditions on the transaction locks
最后一件事:不要让R/W使用svnserve和apache svn访问同一个存储库,它可能会使您的存储库暴露在事务锁的竞争条件下。