git - 为什么 git 在“解决增量”时需要网络连接?
问题描述
执行 git clone 时,git 会经历这些阶段
Receiving objects
Resolving deltas
Checking out files
我希望所有的网络活动都在 期间Receiving objects
,然后Resolving deltas
完全是本地的(正如这里解释的,当它说它是“解析增量”时,git 实际上在做什么?)但实际上仍然有一个连接打开。
我可以通过两种方式来说明这一点:
- Wireshark 显示在此期间没有任何活动,在
Resolving deltas
关闭连接之后交换了一些数据包。 - 有时我看到一个连接在很长的
Resolving deltas
步骤中被远程主机关闭。
所以我有兴趣知道为什么 git 需要这个连接来保持打开状态Resolving deltas
?出于某种原因(例如钩子)之后是否需要它?
(注意:这可能取决于您使用的是 https 还是 ssh)
解决方案
鉴于这个方向在这个阶段没有任何事情要做,不清楚为什么 Git 保持传输协议打开直到解析完成。在另一个方向——如果你正在推送——你的 Git 必须在接收方解析交付的瘦包期间保持连接打开,因为服务器端参考更新尚未发生,而你自己的 Git 需要知道它们是否是成功的。因此,对于推送,您的 Git 必须保持连接打开,等待解决方案完成,并等待查看他们的 Git 报告参考更新阶段的内容。
然而,对于克隆,他们的 Git 并不关心您的 Git 是否能够更新您的引用。应该可以提前关闭传输。可能有一些不幸的代码结构使得现在这太困难了,导致 Git 保持连接打开。
推荐阅读
- javascript - 如何使用 React 根据用户输入突出显示文本?
- f# - 如何在 f# 中合并数组
- google-cloud-platform - Cloud Spanner 与 Liquibase 故障的集成
- java - 在 MarkLogic 中,如果 EvaluResultIterator 未使用或包含空序列,是否应该关闭它?
- amazon-web-services - 如何为 s3 触发事件添加过滤器值
- ios - 尝试更新 pod 时,终端给出错误
- javascript - 如何在 PHP 中解码 encodeURIComponent 而不会将整数转换为字符串
- reactjs - 如何在功能性成分酶中产生替代功能
- javascript - 为什么我的机器人不使用 discord.js 发送消息
- python-3.x - Openpyxl:值错误:颜色必须是 aRGB 十六进制值