Mercurial Keyring запрашивает пароль каждый раз

Я использую расширение Mercurial Key-Ring для хранения пароля в моем удаленном репозитории в BitBucket, поэтому мне не нужно вводить его каждый раз, когда я отправляю в удаленный репозиторий. По иронии судьбы, он просит у меня пароль, чтобы разблокировать кольцо для ключей каждый раз, когда мне нужно получить к нему доступ; тем самым полностью смягчая свою цель для меня. Что я делаю неправильно?

В моей глобальной конфигурации Mercurial (~/.hgrc) у меня есть следующие строки:

[extensions]
hgext.mercurial_keyring = /etc/mercurial/mercurial_keyring.py

В моем репозитории Mercurial (.hg/hgrc) у меня есть:

[paths]
default = https://username@bitbucket.org/username/repo

Пример:

> hg out
> comparing with https://username@bitbucket.org/username/repo
> Please enter password for encrypted keyring:

Я попытался удалить брелок и повторил попытку. Я также играл с настройками конфигурации, которые я нашел онлайн, но безрезультатно. Я также не мог найти что-нибудь о зашифрованном и незашифрованном брелоке в отношении Mercurial.

Как я могу получить его, чтобы мне вообще не приходилось вводить пароль при выполнении действий с удаленным репо?

1 ответ

Я не знаю, было ли это уже так в то время, когда был задан вопрос, но теперь решение напрямую объясняется в вики-ссылке расширения keyring в вашем вопросе.

Недостаточно просто включить расширение связки ключей, вам также необходимо указать Mercurial удаленное репо и имя пользователя в файле конфигурации.

Цитата по ссылке:

3.2. Конфигурация репозитория (HTTP)

Изменить локальный репозиторий .hg/hgrcи сохраните там путь к удаленному репозиторию и имя пользователя, но не сохраняйте пароль. Например:

[paths] 
myremote = https://my.server.com/hgrepo/someproject

[auth] 
myremote.schemes = http https 
myremote.prefix = my.server.com/hgrepo
myremote.username = mekk

Также можно использовать более простую форму с именем, встроенным в URL:

[paths]
bitbucket = https://User@bitbucket.org/User/project_name/

Примечание: если и имя пользователя, и пароль указаны в .hg/hgrc, расширение будет использовать их без использования базы данных паролей. Если имя пользователя не указано, расширение будет запрашивать учетные данные каждый раз, также без сохранения пароля. Таким образом, в обоих случаях он фактически возвращается к поведению по умолчанию.


Обратите внимание, что вам не нужно указывать всю информацию, показанную в этих примерах.

На моей машине (Mercurial 5.0.2 в Windows) я использую более простую форму, которая также работает для нескольких репозиториев.
Это копия 1:1 из моего фактического файла конфигурации:

[extensions]
mercurial_keyring = 

[auth]
bb.prefix = https://bitbucket.org/
bb.username = christianspecht

При этом используется расширение связки ключей, чтобы сохранить пароль для пользователя. christianspechtдля всех удаленных репозиториев, URL-адрес которых начинается с https://bitbucket.org/.

Префикс bb можно свободно выбирать, поэтому вы можете использовать его для одновременного сохранения нескольких URL / имен пользователей.

Это работает отлично (по крайней мере, до тех пор, пока Bitbucket не прекратит поддержку Mercurial через несколько недель...) - он запрашивает пароль один раз, затем автоматически сохраняется и больше никогда не запрашивает.

он просит у меня пароль, чтобы разблокировать кольцо для ключей. Что я делаю неправильно?

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

Другие вопросы по тегам