2009-12-14 4 views
4

У меня клон большого размера, чтобы нажать на Google Code, и потребуется, чтобы диалоговое окно проверки подлинности появилось после того, как нажатие нажимается, так что данные TortoiseHg push сначала проходят проверку подлинности?Почему Mercurial не аутентифицируется перед нажатием данных?

+0

Наверное, нет, я не могу придумать причину этого. –

+0

, но для проверки подлинности требуется очень много времени, и я вижу, что моя лента загрузки увеличивается. что, черт возьми, он делает! – Benny

+2

см. Http://mercurial.selenic.com/bts/issue1876 – tonfa

ответ

3

Обновление: Исправлена ​​ошибка fixed.

Редактировать: durin42: Это не полностью исправлено. Мы близки, но для меня все еще есть работа, прежде чем переписывание будет включено по умолчанию. Мы пытаемся быть действительно консервативными с переключением. (Точный статус по состоянию на январь 2012 года, смотреть примечания к Mercurial для дальнейших обновлений.)


TL; DR: HTTPLIB существенно нарушается здесь, и что вызывает эту проблему ртутного столба. Люди работают над этим.

Это неудачный побочный эффект от работы urllib и httplib. httplib/urllib не будет превентивно отправлять авторизацию, что является неудачным.

Хорошая новость заключается в том, что есть постоянная работа по исправлению этого, плохая новость заключается в том, что похоже, что по существу будет полностью переписан httplib, чтобы получить разумное поведение. В частности, httplib является полудуплексным и не имеет возможности заглядывать в входящие пакеты (для обнаружения раннего ответа), поэтому он должен сначала отправить запрос, прежде чем он сможет получить подсказку autest auth (при условии использования digest auth, который это лучший вариант). Некоторые серверные реализации даже закрывают сокет, как только они отправляют запрос на авторизацию 401, что фактически полностью разрушает httplib, поднимая сообщение об ошибке. Я опубликовал обходной путь для этой проблемы, который находится в hg 1.4, но это только исправление для пользователя, а не фактическое решение для производительности.

+0

Я знаю, что этот комментарий довольно старый, но .. теперь переписан httplib переписанный в Mercurial? – GuiSim

+3

Для тех, кто наткнулся на этот комментарий, кажется, что переписывание завершено http://mercurial.selenic.com/bts/issue1876 – GuiSim

0

Ожидается, что он будет собирать список наборов изменений с сервера, чтобы он знал, какие локальные изменения не отображаются на сервере, и, следовательно, их необходимо перенести. В основном эквивалент hg outgoing. Только после того, как он определил, что наборы изменений нажимают, ему нужно что-либо написать (и, возможно, нет, если нет различий), поэтому он не будет аутентифицироваться до тех пор, пока он не понадобится.

Смежные вопросы