我有一个大尺寸的克隆要推送到谷歌代码,并且在推送启动后需要很长时间才能显示身份验证对话框,那么 TortoiseHg 推送数据是否首先验证第二个?
2 回答
更新:该错误现已修复。
durin42 编辑:它不是完全固定的。我们已经很接近了,但在默认情况下重写之前,我还有一些工作要做。我们正在尝试对切换非常保守。(截至 2012 年 1 月的准确状态,请观看 Mercurial 的发行说明以获取进一步更新。)
TL;DR:httplib 在这里基本上被破坏了,这导致了这个问题。人们正在努力解决这个问题。
这是 urllib 和 httplib 工作方式的一个不幸的副作用。httplib/urllib 不会抢先发送授权,这是不幸的。
好消息是正在解决这个问题,坏消息是它看起来基本上需要对 httplib 进行完全重写才能使其达到合理的行为。特别是,httplib 是半双工的,无法查看传入的数据包(以检测早期响应),因此它必须先发送请求才能获得摘要身份验证提示(假设使用摘要身份验证,这是最好的选择)。一些服务器实现甚至在发出 401 Authorization Required 后关闭套接字,这实际上通过引发损坏的管道错误完全破坏了 httplib。我为 hg 1.4 中的该问题提交了解决方法,但这只是用户烦恼的修复,而不是实际的性能解决方案。
我希望它会从服务器收集变更集列表,以便知道哪些本地变更集没有出现在服务器上,因此需要传输。基本上相当于hg outgoing
. 只有确定要推送的变更集后,它才需要编写任何内容(如果没有差异,则可能不需要),因此在实际需要之前不会进行身份验证。