Skip to content

Mercurial_keyring

07/08/2012

Столкнулся недавно с неприятной проблемой — mercurial_keyring не хотел сохранять пароли. Mercurial_keyring — плагин к mercurial (системе контроля версий), позволяющий не вводить пароль при каждой операции с удалённым репозиторием. Мне это потребовалось для организации автодеплоя прямо из репо.

Когда я прошелся по коду mercurial_keyring (он написан на python), оказалось что проблема лежит в функции get_http_password, точнее в том, что модуль keyring не может сохранить/получить пароль, если в ключе присутствует знак :. Скрипт mercurial_keyring.py генерирует ключ из логина и url-а, соответственно если URL начинается с http: или https:, плагин просто не находит сохраненного пароля.

Я это у себя исправил просто правкой mercurial_keyring.py. Было:

    def _format_http_key(self, url, username):
        return "%s@@%s" % (username, url)

Стало:

    def _format_http_key(self, url, username):
        return "%s@@%s" % (username, url.replace(':', '#'))
Добавить комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: