Mercurial, TortoiseHg, keyring и использование двух удаленных репозиториев с двумя именами пользователей и паролями

Я использую TortoiseHg Workbench 64bit 2.1.4, хотя это может быть проблема с Mercurial. ОС - Windows 7 (64 бит).

У меня есть два проекта, которые я выдвигаю в двух разных местах (один - битбакет, другой - частный). Они используют разные имена пользователей и пароли, и я нажимаю HTTPS.

Я установил keyring в свой mercurial.ini:

[extensions]
mercurial_keyring=

а в двух файлах .hg/hgrc у меня есть пути установки с их соответствующими значениями:

[paths]
default = https://[email protected]/XXX

Если я работаю только с одним репо, пароль запоминается каждый раз, когда я подключаюсь. Однако, когда я переключаюсь между проектами, мне нужно повторно ввести пароль. Как будто он будет помнить только один пароль.

Ниже приведен пример журнала с опцией teh --debug (пароль выводится после строки "user: userX (исправлено в .hg/hgrc)":

% hg --repository xxx push --debug https://[email protected]/XXX
pushing to https://[email protected]/XXX
using https://[email protected]/XXX
http auth: user userX, password not set
sending capabilities command
domainX certificate successfully verified
Keyring URL: https://[email protected]/XXX
Keyring password found. Url: https://[email protected]/XXX, user: userX, passwd: ********
domainX certificate successfully verified
Keyring URL: https://[email protected]/XXX
http authorization required
realm: DEV
user: userX (fixed in .hg/hgrc)
Saving password for userX to keyring
Manually entered password. Url: https://[email protected]/XXX, user: userX, passwd: ********
domainX certificate successfully verified
sending heads command
Keyring URL: https://[email protected]/XXX
Cached auth data found. Url: https://[email protected]/XXX, user: userX, passwd: ********
domainX certificate successfully verified
searching for changes
no changes found
checking for updated bookmarks
sending listkeys command
Keyring URL: https://[email protected]/XXX
Cached auth data found. Url: https://[email protected]/XXX, user: userX, passwd: ********
domainX certificate successfully verified

Ответ 1

Я попробовал на своей Windows-машине, и я могу воспроизвести, но не имею никакого исправления. Похоже, что расширение keyring действительно хранит только один пароль и заменяется при сохранении другого. Если вы заходите в Windows Credential Manager, вы можете увидеть это.

Существует существующий отчет об ошибках в библиотеке ключей Python, который использует расширение Mercurial keyring:

https://bitbucket.org/kang/python-keyring-lib/issue/47/winvaultkeyring-only-ever-returns-last

Похоже, вчера один из разработчиков ответил на него, поэтому, возможно, он работает над исправлением.

Изменить. Согласно отчету об ошибке, это теперь исправлено, и, по словам Ли Аткинсона, он также работает в TortoiseHg.