[英]Cannot connect to svn with tortoise svn but can by a webbrowser
我配置了svn存儲庫以通過apache訪問它。
我可以通過任何具有這些地址的網絡瀏覽器訪問它。
http://svn.domain.com
http://www.domain.com:3690
但是,當我嘗試使用Windows上的tortoiseSVN或Linux上的命令行進行結帳時,第一個返回:“無法使用的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>
您無法簽出域名,也無法更改協議並期望另一端的服務器突然開始使用該新協議。
您的網站正在向SVN服務器發出SVN請求,然后將請求格式化為HTML。 這意味着http://svn.domain.com
不是SVN URL。 您需要找出什么是SVN URL,它至少包含一個項目名稱,例如protocol://server/projectname
mod_rewrite是一個很好的工具,可以自動將一個URL重寫為另一個URL。 但是,如果此時使用mod_rewrite,則只會將mod_dav_svn配置問題隱藏在以編程方式重寫您的網址的層下。 用這種方式解決它要困難得多,因為引入了一個新問題(URL重寫是否損壞?)而沒有解決第一個問題。
好的,為什么將3690端口用於HTTP?
Subversion可以使用幾種不同的協議來訪問存儲庫。 但是,您不能混合n匹配。 如果將Apache HTTP用作服務器,則只能使用HTTP協議:
$ svn co http://svn.domain.com/<srvrInst>/path/to/your/repository
在Apache中,在域之后,通常是服務器實例,因為多個服務器實例可以連接到單個Apache實例。 大多數情況下,盡管我已經看到使用過的源代碼 ,但它只是svn 。 這是在您的Apache HTTP配置中配置的。
基本上,您可以在網絡瀏覽器中瀏覽的任何目錄都應允許您檢出它。 但是,如果打開了SVNListParentPath
,則會發生異常。 無法檢出所有存儲庫的父目錄。 否則,您可以簽出可以瀏覽到的任何目錄。
可以通過svnserve和Apache http同時提供相同的存儲庫。 如果這樣做,則可以使用Apache http
協議或svn
協議。
如果這不能解決您的問題,則必須向我們提供更多信息。 例如,您的Apache http配置是什么樣的。 您可以瀏覽什么URL,但不能結帳? 請記住,在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
我相信您的問題是Directory指令本身。 假定在您的存儲庫所在的域下指定目錄。 通常,它就像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
進行結帳? Checkout URL已經很長了,因此我無法想象向該事物添加更多目錄。
您說可以通過Web瀏覽器瀏覽存儲庫。 在這種情況下,您應該能夠從Web瀏覽器中剪切該URL(只要它是目錄而不是文件),然后將其粘貼到Tortoise或Subversion命令行中。
順便說一句,我看到您已設置AuthUserFile。 也許問題是您需要指定用戶名和密碼? 暫時不讓虛擬主機監聽端口3690。 如果您確實要使用該端口,請在存儲庫服務器上運行svnserve
,並讓人們使用snv://
協議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.