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://userX@domainX/XXX

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

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

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