簡體   English   中英

無法使用烏龜svn連接到svn,但可以通過網絡瀏覽器連接

[英]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指令本身。 假定在您的存儲庫所在的域下指定目錄。 通常,它就像svnsource ,因此您可以通過以下方法進行結帳: $ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM