2010-01-05 18 views
4

我的網站託管服務提供商讓我可以通過WebDAV訪問我的網站空間,所以我想我會在那裏設置一個Git儲存庫,以查看會發生什麼。克隆存儲庫只讀工作得很好,因爲「git clone http://my.server.com/repo.git」只是使用標準的HTTP傳輸。通過WebDAV進行git http推送 - 如果我的用戶名中有「@」,該怎麼辦?

問題就出來了,當我嘗試使用WebDAV,因爲我的用戶ID是「[email protected]」,我必須使用端口2077這意味着我必須做一些像

git config remote.origin.pushurl http://[email protected]@my.server.com:2077/repo.git 

並且URL中的兩個@符號一定會引起問題,因爲「git push origin master」報告「錯誤22」。

我試圖創建一個.netrc文件條目

machine my.server.com 
login  [email protected] 
password **** 

,但似乎並沒有幫助。

我也嘗試用「%」,「\ @」和「%40」替換第一個「@」,但沒有一個工作。

+0

我想知道你是否想出瞭解決這個問題的辦法,因爲我遇到了問題,並且我認識到這些端口......我在同一個提供者中。 – mmc 2010-06-04 16:49:21

回答

1

如果所使用的URI通過WebDAV的不遵循Uniform Resource Identifier (URI): Generic Syntaxrfc3986),不應該有任何@userinfo

authority  = [ userinfo "@" ] host [ ":" port ] 
userinfo  = *(unreserved/pct-encoded/sub-delims/":") 
pct-encoded = "%" HEXDIG HEXDIG 

unreserved = ALPHA/DIGIT/"-"/"."/"_"/"~" 
sub-delims = "!"/"$"/"&"/"'"/"("/")" 
      /"*"/"+"/","/";"/"=" 


reserved  = gen-delims/sub-delims 
gen-delims = ":"/"/"/"?"/"#"/"["/"]"/"@" 

那你有沒有嘗試只是http://[email protected]:2077/repo.git

+0

我在我的Ubuntu筆記本電腦上使用dav://[email protected]:2077 /之前,我得到了Git附近的任何地方。它沒有工作,並花了幾個毫無結果的時間發現我需要dav://my.server.com:2077 /,然後在提示時輸入[email protected]和密碼。誰寫了一點cPanel-11(我的託管服務提供商使用)顯然沒有考慮RFC兼容的用戶名:-( – kbro 2010-01-05 21:41:10

+0

所以我的問題實際上與Git沒有任何關係。我的服務器上的WebDAV實現使用用戶名不符合RFC 3986,所以除非它支持「@」的替換字符,否則我就塞滿了! – kbro 2010-01-05 22:32:37

+0

@kbro恐怕它開始看起來這樣了...而且我不知道任何替換爲登錄一個id用戶名 – VonC 2010-01-05 22:44:09

5

當前版本的git不處理用戶名和密碼中的percent-unescaping。我昨天提交了一個修補程序來解決這個問題(至少對於HTTP URL),因此它很快就會被修復。隨着補丁,你應該能夠訪問的WebDAV:

混帳配置remote.origin.pushurl http://user%[email protected]:2077/repo.git

然而,你可能有涉及與libcurl的一個問題,另一個問題> 7.16(見注在「 git help http-push「)。

相關問題