我配置了我的svn存储库以通过apache访问它。
我可以通过任何带有这些地址的网络浏览器访问它。
http://svn.domain.com
http://www.domain.com:3690
但是当我尝试在Windows上使用tortoiseSVN或在linux上的命令行上检查时,第一个返回:“Unusable URI:它不引用此存储库”,第二个运行数小时并以超时错误。 (我也尝试过svn://domain.com做同样的事情)
我读到mod_rewrite可以用于该问题中的某些内容,但除了删除mod_rewrite之外,我没有看到任何解决该问题的方法。
但我需要mod_rewirte用于此服务器上的网站。
有什么问题?
有没有办法同时运行mod_dav_svn和mod_rewrite?
修改
虚拟主机conf文件如下所示:
<Directory /path/to/subdomain>
DAV svn
SVNPath /path/to/repos
AuthType Basic
AuthName "Repos Name"
AuthUserFile /path/to/auth-user/file
Require valid-user
</Directory>
我将其添加到httpd.conf文件中:
Listen 3690
NameVirtualHost *:3690
<VirtualHost *:3690>
ServerName svn.domain.com
<Location />
DAV svn
AuthType Basic
AuthName "Repos Name"
AuthUserFile /path/to/auth-user/file
SVNPath /path/to/repos
Require valid-user
</Location>
</VirtualHost>
答案 0 :(得分:0)
您无法检出域名,也无法更改协议,并希望另一端的服务器突然开始讨论该新协议。
您的网站正在向SVN服务器发出SVN请求,然后将请求格式化为HTML格式。这意味着http://svn.domain.com
不是SVN URL。你需要找出什么是SVN URL,它将包含至少一个项目名称,如protocol://server/projectname
mod_rewrite是一个很好的工具,可以自动将一个URL重写为另一个URL;但是,如果此时使用mod_rewrite,则只会在以编程方式重写网址的图层下隐藏mod_dav_svn配置问题。以这种方式修复它要困难得多,因为你引入了一个新问题(URL重写是否被破坏?)而没有修复第一个问题。
答案 1 :(得分:0)
好的,为什么你在使用端口3690进行HTTP?
Subversion可以使用几种不同的协议来访问存储库。但是,你不能混合匹配。如果您使用Apache HTTP作为服务器,则只能使用HTTP协议:
$ svn co http://svn.domain.com/<srvrInst>/path/to/your/repository
在Apache中,在域之后,通常是服务器实例,因为多个服务器实例可以连接到单个Apache实例。大多数时候,它只是 svn ,尽管我已经看过 source 。这是在Apache HTTP配置中配置的。
基本上,您可以在Web浏览器中浏览的任何目录都应该允许您查看它。但是,如果您有SVNListParentPath
,则会有例外。您的所有存储库的父目录都无法签出。否则,您可以签出任何可以浏览的目录。
可以同时通过svnserve和Apache http提供相同的存储库。如果这样做,您可以使用Apache http
协议或svn
协议。
如果这不能解决您的问题,您必须向我们提供更多信息。例如,您的Apache http配置是什么样的。您可以浏览哪个网址,但不能结帐?记住在Subversion下,你只能检查目录而不是文件。如果需要文件,可以对文件使用svn cat
并将输出重定向到文件。
虚拟主机conf文件如下所示:
<Directory /path/to/subdomain>
DAV svn
SVNPath /path/to/repos
AuthType Basic
AuthName "Repos Name"
AuthUserFile /path/to/auth-user/file
Require valid-user
我相信您的问题是目录指令本身。这是假设您的域所在的目录下指定您的存储库所在的目录。通常,它只是svn
或source
,因此您可以执行此操作以结帐:$ svn co http://svn.domain.com/svn/repo
或$ svn co http://svn.domain.com/source/repo
。在网址
我从未尝试过像这样的多级目录。您是否希望人们指定http://svn.domain.com/path/to/subdomain/repo
来结帐?结帐网址已经很久了,所以我无法想象添加更多目录。
您说您可以通过网络浏览器浏览存储库。如果是这种情况,您应该能够从Web浏览器中删除该URL(只要它是一个目录而不是文件)并将其粘贴到Tortoise或Subversion命令行中。
顺便说一下,我看到你设置了AuthUserFile。也许问题是您需要指定用户名和密码?暂时不要在端口3690上侦听虚拟主机。如果您确实想使用该端口,请在存储库服务器上运行svnserve
,并让人们使用snv://
协议。