通过http的GIT克隆失败(curl result = 22,http_code 401)

时间:2011-03-09 19:43:00

标签: git

Mac OS X 10.6.6服务器 客户端和服务器的git版本是:1.7.3.5

返回的错误是:

Chris-Muenchs-Mac-Book-Pro:Desktop cmuench$ git clone http://example.com/is.git
Cloning into is...
Username: 
Password: 
error: The requested URL returned error: 401 (curl_result = 22, http_code = 401, sha1 = 8fbb19449c4388ae4b51594af3507bfd44c567d7)
error: Unable to find 8fbb19449c4388ae4b51594af3507bfd44c567d7 under http://example.com/is.git
Cannot obtain needed commit 8fbb19449c4388ae4b51594af3507bfd44c567d7
while processing commit 129e0ba31589356b9c4326907ddf7e11d7b6be18.
error: Fetch failed.

以上引用的提交sha1存在于repo中,我可以通过文件系统克隆,但不能通过http或https进行克隆。

以下是我的apache设置:( WebDav为ON)(在此片段上方定义)

<Location "/is.git">
    AuthType Basic
    <Limit GET HEAD OPTIONS CONNECT POST PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
        Require group  development
    </Limit>
    AuthName "is.git"
</Location>

有关如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:11)

<强>概述

HTTP 401表示请求需要用户身份验证,请参阅HTTP Status Codes

假设您输入了正确的用户名和密码,401响应意味着可能没有正确提交凭据,或者凭证可能未经过良好的身份验证。忽略这一行。

真实问题

接下来的3行表明了真正的问题所在。

     error: Unable to find 8fbb19449c4388ae4b51594af3507bfd44c567d7 under http://example.com/is.git
     Cannot obtain needed commit 8fbb19449c4388ae4b51594af3507bfd44c567d7
     while processing commit 129e0ba31589356b9c4326907ddf7e11d7b6be18.

这意味着在服务器上找不到某些提交。

<强>解决方法

执行git cleanup git gc应该可以解决问题。在托管git repo的文件夹上运行 git gc ,这样可以解决问题。

干杯

答案 1 :(得分:0)

您尝试推送时看到的HTTP 403是代码,意思是“禁止”。你需要添加:

Order allow,deny
Allow from all

...到你的Location区块?