解析增量后,带有NTLM代理的git clone会挂起

问题描述 投票:11回答:6

我在这里看到很多关于git和代理主题的问题,但没有一个能解决我的问题。我正在从Bitbucket克隆一个git存储库。从我的家庭网络一切正常,但挂起工作,我们使用代理与NTLM身份验证。请参阅git clone命令的输出:

$ git clone https://[email protected]/my_user/my_project.git --verbose
Cloning into 'my_project'...
Password for 'https://[email protected]':
POST git-upload-pack (174 bytes)
remote: Counting objects: 548, done.
remote: Compressing objects: 100% (367/367), done.
remote: Total 548 (delta 216), reused 0 (delta 0)
Receiving objects: 100% (548/548), 5.28 MiB | 533 KiB/s, done.
Resolving deltas: 100% (216/216), done.

git clone命令总是挂起“Resolving deltas”。

我的设置:

  • 带有msysgit 1.8.0的Windows 7 64位
  • 代理配置: $git config --global http.proxy http://MY_DOMAIN\\\my_user:my_password@http-proxy:8080

似乎这个问题与git对象大小有某种关系,因为当我只在我的存储库中存在少量文件时,git clone就开始工作了。

git https clone ntlm
6个回答
3
投票

我用Git 1.7.11打了同样的问题。我从GitHub克隆的所有尝试都会导致挂起的进程没有文件。我在类似的问题中尝试了verify-pack技巧和许多其他建议,但没有任何效果。

我想可能在最新版本的Git中已经改进或修复了,所以我升级到了1.8.3。宾果,现在它的作品,我可以克隆!


3
投票

抱歉,我的英语很不好。希望你能理解。

我在这里遇到了同样的问题。我无法找到并解决问题,但我终于能够结账了。当git clone挂起“Resolving deltas”时,杀死git进程。所以,你有文件夹my_project,文件.git\objects\pack\pack-<sha1>.pack。现在,我们需要找到修订号。在下面输入以下命令:

git verify-pack -v .git\objects\pack\pack-<sha1>.pack | grep "commit" | more

输出是这样的:

98c9f779992fc9a52372e0a1a76647e5d9ca5e01 commit 340 227 12
b6435d98f7b62ce69c59ce582beddf547f26d8a2 commit 305 208 239
a2a39a0c707b2919c87b194dca9a0dea307ce069 commit 239 159 447
...
4803e013b30dc9d31e4a8dba7e1a2d65e6f61422 commit 243 167 6768
-- More  --    

顶部的98c9f779992fc9a52372e0a1a76647e5d9ca5e01是HEAD修订版,所以你可以查看到这一点:

git checkout -b master 98c9f779992fc9a52372e0a1a76647e5d9ca5e01

完成。


2
投票

我有同样的问题,虽然我不能确定原因我有什么我认为是一个稍微好一点的解决方法比使用验证包和结帐最后提交,如cakyus所解释。

将最后一次提交检出为主分支的问题在于,您无法保证提交特别属于该分支,因此我所做的是:

  • Ctrl+C中断挂在解析增量上的git进程
  • 使用git fetch获取分支信息
  • 使用git checkout master检查主分支(或任何其他分支)

这使得git设置我的分支主机来跟踪远程分支主机并正确解压缩文件,同时保留分支信息。


0
投票

不是答案,只是提出症状来缩小这个问题的原因。我有完全相同的问题。它只是坐在那里“解决三角洲”。

v1.7.10已为HTTP和HTTP配置Win2008 R2企业代理。

我会让一位同事登录服务器(.git配置是他漫游配置文件的一部分),看看它是配置还是安装。


0
投票

这个博客http://stas-blogspot.blogspot.ca/2012/12/git-hangs-after-resolving-deltas.html上的评论对我有用的解决方案:

由于已正确下载包文件,您只需要使用Ctrl + C中断该过程,执行git fetch以从远程存储库获取分支信息,并使用git checkout再次检出主(或任何其他)分支主。

所以解决方案就是杀死挂起过程然后:

git fetch
git checkout

0
投票

两件事(2019年4月,七年后):

  1. 不要直接声明NTML代理URL。将HTTP_PROXYHTTPS_PROXY环境变量设置为和HTTP代理(不是NTLM环境变量),例如genotrance/px。 通过运行px(重定向到您的NTLM代理),您可以引用经典的HTTP代理(通常是http://localhost:3128,不需要您的登录名/密码!),这样可以更好地工作。
  2. 如果“解决增量”仍然需要时间,请务必使用Git 2.22(2019年第2季度)

关于第二点:“index-pack”步骤中添加了一个进度指示器,这通常会使用户在“git clone”期间等待完成。

commit 79e3aa6SZEDER Gábor (szeder)(2019年3月31日)。 (由Junio C Hamano -- gitster --合并于commit da924b5,2019年4月25日)

index-pack:检查对象时显示进度

当'git index-pack'由'git clone'运行时,它的check_objects()功能通常不需要花费太长时间就可以成为一个问题,但我只是遇到了大约一分钟左右的情况:我无意中给我带来了一些内存压力克隆linux.git的小笔记本电脑,然后在“Resolving deltas”和“Checking connectivity”进度条之间有相当长的沉默。

check_objects()循环期间显示进度条,让用户知道某些事情仍在继续。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.