2012-03-23 23 views
5

我一直在遇到一些問題,試圖通過使用git-svn的HTTPS訪問Subversion存儲庫。通過代理服務器通過HTTPS使用git-svn時出現未知協議錯誤

當我鍵入git svn init --username=<my username> --trunk=https://<host>/<project>/trunk,我得到了以下錯誤消息:

RA layer request failed: PROPFIND request failed on '/<project>/trunk': 
PROPFIND of '/<project>/trunk': SSL negotiation failed: SSL error: unknown 
protocol (https://<host>) at C:\Program Files (x86)\Git/libexec/git-core\git-svn 
line 2299 

幾個其他點要注意:

  1. 我使用msysgit 1.7.9.0在Windows 7 64位系統。我還安裝了Subversion 1.7.1命令行客戶端和TortoiseSVN 1.7.1。
  2. 我通過代理服務器進行連接,該代理服務器通過HTTP_PROXY環境變量和git config http.proxy指定。
  3. 我可以在同一臺機器上通過HTTPS克隆Github存儲庫而不會出現問題。
  4. 普通的Subversion客戶端簽出相同的項目沒有問題。我也能夠使用Mercurial和hgsubversion成功克隆它,儘管它確實無法識別服務器的SSL證書,所以我必須在我的mercurial.ini文件中明確指定它。正因爲如此,我使用git config http.sslVerify=false。但是,這沒有任何區別。
  5. 單向解決方法(如使用svnsync(如建議的here)不是一個選項。

還有什麼我還沒試過?

+0

您能否首先驗證您是否可以使用普通的顛覆客戶端檢出該項目,以排除顛覆本身的任何問題? – 2012-03-23 15:36:27

+0

我已經這麼做了 - Subversion客戶端沒有問題地檢查項目。 – jammycakes 2012-03-23 15:38:50

+0

James,'openssl s_client -connect host:443'請爲了清楚 – 2012-03-26 21:01:03

回答

0

我終於發現如何讓它工作。答案來自this thread

當您通過代理連接到Subversion服務器時,git-svn不會使用.gitconfig中的代理設置,也不會使用您在TortoiseSVN中配置的設置。相反,它看起來在%USERPROFILE%\.subversion\servers[global]部分。

將我們的代理服務器設置添加到這個文件允許我連接到外部的Subversion服務器。

1

您收到的郵件(SSL23_GET_SERVER_HELLO:未知協議)很容易谷歌。例如。 herehere看起來你的https或dns服務器配置有誤,與git無關。

+0

這並不能解釋爲什麼我能夠使用vanilla Subversion和Mercurial/hgsubversion成功連接。您的鏈接建議我唯一可以遵循的是「目標網站不喜歡密碼」 - 但是,如何使用git-svn指定不同的密碼?另外,我無權訪問服務器來調整https或DNS設置。 – jammycakes 2012-03-27 19:58:57

1

提供一個稍微簡潔的答案,kan is correct。您看到的原因是您的上游存儲庫未針對SVN + HTTPS進行正確配置。這可能是由於服務器端配置錯誤造成的,也可能是由於服務的SVN協議與客戶期望的不同所致。

該勘誤爲此問題提供了正確的調試場景。如果您可以控制SVN存儲庫,請確保its HTTPS configuration is working properly繼續將其用作上游存儲庫。如果您希望更改用於進一步排除連接故障的協議或URL(例如,嘗試通過HTTP或SSH),請參閱here's the guide you'll need

+0

不幸的是,這個答案有同樣的問題:它沒有解釋(一)爲什麼香草Subversion工作正常,Mercurial/hgsubversion也可以正常工作,以及(b)爲什麼SourceForge上的SVN存儲庫也失敗。我開始認爲這很可能是代理服務器問題。 – jammycakes 2012-03-30 15:21:33

9

爲了擴大對其他兩個答案一點點(並解釋爲什麼你看到你所看到的),git svn(如msysgit的一部分)是建立對svn的1.4.6:

C:\> git svn --version 
git-svn version 1.7.7.1.msysgit.0 (svn 1.4.6) 

請注意,1.4.6是...好...舊的。 (和hasn't even been supported since 1.6 was released 2009年)使用的顛覆安裝

msysgit的git-svn - 因此能夠利用檢出安裝的svn是(不幸)不表示問題。

some bug reports關於升級到msysgit的較新的顛覆,但它似乎還沒有物化。

你有沒有試過cygwin的git-svn

+0

+1。很好找! :) – MrGomez 2012-03-30 22:54:39

+0

在黑暗中拍攝,但也許可以簡單地用新版本的svn替換libsvn dll。但是我沒有一個容易訪問的Windows機器來測試它。 – 2012-03-31 01:19:14

+0

我試過cygwin的git-svn。不幸的是,它給出了幾乎相同的錯誤,除了它說OPTIONS而不是PROPFIND。 – jammycakes 2012-04-02 08:06:27

相關問題