SVN網絡訪問共有四種協議。哪種協議? svn://或http(s)://?
svn://repos
svn+ssh://repos
https://repos
http://repos
維基百科頁面並沒有多說四種不同協議的差異。我一直傾向於svn://
,因爲它是最容易設置的,但有什麼區別,哪一個更好?
SVN網絡訪問共有四種協議。哪種協議? svn://或http(s)://?
svn://repos
svn+ssh://repos
https://repos
http://repos
維基百科頁面並沒有多說四種不同協議的差異。我一直傾向於svn://
,因爲它是最容易設置的,但有什麼區別,哪一個更好?
http://
有一個嚴重開銷,尤其是在處理數千個小文件時,我使用了svn作爲一個包含大約50000個圖標的網站,全部都保存在SVN中,使用HTTP,花費了大約20分鐘的時間。切換到svn://
,花了不到一分鐘。這是因爲使用HTTP時,每個文件都有一個新的HTTP請求。
http://
然而,它有以下巨大優勢:它通常經過防火牆。例如,現在我切換到svn://
,因爲他們的防火牆,我無法再從我的大學訪問我的存儲庫。
關於使用SSL/TLS與否的區別,很明顯:數據是加密的;但是設置起來更加困難。
https://
和svn+ssh://
被加密,因此用於傳輸安全數據(如您的SVN密碼更安全。
如果它像混帳東西,svn+ssh://
將快於https://
和svn://
將快於http://
。
http
和https
由Web服務器模塊爲Subversion支持處理,因此您可以使用基於HTTP的身份驗證(通過.htaccess配置)來限制對存儲庫的訪問)。
那麼,你也可以使用svnserve進行身份驗證..它只是以一種稍微不同的方式完成的。 – 2010-01-26 16:57:14
是的,如果您有100個存儲庫用於同一開發人員組,則需要在任何存儲庫中傳輸配置文件。這樣,只能有一個允許它們訪問的文件,並且其中的每個更改都將控制對任何存儲庫的訪問 – Vestel 2010-01-26 17:01:24
您可以使用svnserve +符號鏈接獲得相同的效果。另外,爲同一個開發人員組創建幾個存儲庫是沒有意義的,並且不會受官方svn書籍的影響。 – 2010-01-26 17:17:38
svn+ssh
是在SSH隧道內運行的svn
協議。客戶端使用SSH登錄遠程服務器,並在該隧道中遠程運行svn命令。在我看來,svn+ssh
是在遠程系統上使用Subversion版本庫的最簡單方法,因爲您沒有任何服務器可以在該系統上啓動,假設您已經運行了SSH服務器。
另外,svn+ssh
受益於SSH的加密保護。請勿在不可信網絡上使用原始svn
協議。
svn+ssh
的主要問題是它需要在遠程機器上進行shell訪問。如果不允許他訪問整個shell帳戶,就很難提供對存儲庫的訪問權限。爲此,您需要基於HTTP的方法之一,即http
或https
(由於加密和身份驗證層,最好是https
)。這些方法配置比較複雜(您需要HTTP/HTTPS服務器,例如Apache),但允許存儲庫管理員仔細並精確地控制存儲庫訪問權限。
使用svn + ssh,很容易限制對svn的訪問。 – 2015-08-01 23:48:23
另外,如果您使用http://(Apache + SVN),那麼您可以讓您的用戶使用Windows身份驗證登錄並增加了mod_auth_sspi模塊。
所以你(窗口)的開發者只需要記住一個用戶名/密碼
有人可能會說,svn://
或svn+ssh://
提供比普通HTTP更好的性能和速度或安全的HTTPS時訪問Subversion版本庫,但現在不是這樣。雖然svn://
或svn+ssh://
比HTTP(S)更快,但與SVN 1.6或更低版本的差別並不那麼大。
有no HTTP(S)和最新的Subversion 1.7+客戶端和服務器的主要性能問題。
使用Subversion 1.7的HTTP(S)訪問became much more performant and especially on high-latency network connections thanks to HTTPv2(不要與HTTP/2混淆!)。 Subversion 1.8 switched from libneon
to libserf
for HTTP(S) access和libserf
比libneon
提供更好的性能。
如果您認爲某些問題與HTTP(S)或Subversion在HTTP(S)上的性能有關,則應該調查網絡上是否存在任何使HTTP(S)變慢的服務。根本原因可能是防病毒,主動防火牆或代理。更不用說錯誤配置的網絡設置。不要忘記使用最新的Subversion客戶端和服務器!
想到網絡配置錯誤的例子,似乎有一個相當普遍的問題,它影響到在無法訪問Windows更新站點(http://ctldl.windowsupdate.com/)的斷開網絡上工作的客戶端計算機。這是影響各種系統服務的關鍵問題,但最終用戶在通過HTTPS使用Subversion客戶端時會注意並報告。問題看起來與性能有關,但事實並非如此。閱讀這StackOverflow線程獲取更多信息:https://stackoverflow.com/a/38499619/761095。
http(s)://的另一個優點是符合WebDAV標準。這意味着你可以將這樣的存儲庫安裝在例如資源管理器或其他WebDAV客戶端。請參閱http://svnbook.red-bean.com/nightly/en/svn.webdav.html – Stefan 2010-01-27 15:03:50
由於涉及巨大的開銷和缺乏WebDAV客戶端,Svn正在從v1.7開始移開WebDAV標準。 – whitey04 2011-12-14 12:20:32
Downvoted,因爲這個答案不再是實際的。 SVN 1.7和更高版本大大提高了HTTP(S)的使用率,svnserve的速度和HTTP(S)之間的差異並不是那麼大。 – bahrep 2016-08-08 15:13:47