为什么Mercurial在推送数据之前不进行身份验证?

问题描述 投票:4回答:2

我有一个大尺寸的克隆推送到谷歌代码,并且在推送启动后验证对话框需要很长时间才能显示,TortoiseHg推送数据首先验证第二个吗?

mercurial push
2个回答
3
投票

更新:这个bug现在是fixed

由durin42编辑:它并没有完全修复。我们很接近,但在重写默认情况下,我还有一些工作要做。我们试图通过转换保持真正的保守态度。 (截至2012年1月的准确状态,观看Mercurial的发布说明以获得进一步更新。)


TL; DR:httplib在这里基本上被破坏了,这导致了这个问题hg。人们正在努力解决这个问题。

这是urllib和httplib工作方式的一个不幸的副作用。 httplib / urllib不会抢先发送授权,这是不幸的。

好消息是,目前正在努力解决这个问题,坏消息是看起来它基本上需要完全重写httplib以使其达到合理的行为。特别是,httplib是半双工的,并且无法查看传入的数据包(以检测早期响应),因此它必须先发送请求才能获得摘要身份验证提示(假设使用摘要身份验证,是最好的选择)。一些服务器实现甚至在发出401 Authorization Required后关闭套接字,这实际上通过引发损坏的管道错误完全破坏了httplib。我提交了针对该问题的解决方法,该问题在hg 1.4中,但它只是一个用户烦恼修复,而不是一个实际的性能解决方案。


0
投票

我希望它将从服务器收集更改集列表,以便它知道哪些本地更改集未出现在服务器上,因此需要进行传输。基本上相当于hg outgoing。只有在确定了要推送的变更集之后才需要编写任何内容(如果没有差异,可能不会写入),因此在实际需要之前不会进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.