Как сохранить имя пользователя и пароль с Mercurial?

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

Я попытался добавить следующее к .hgrc файл в моем домашнем каталоге, но, кажется, полностью игнорируется.

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

Как сделать это правильно?

8 ответов

Решение

Вы можете сделать раздел авторизации в своем .hgrc или же Mercurial.ini файл, вот так:

[auth]
bb.prefix = https://bitbucket.org/repo/path
bb.username = foo
bb.password = foo_passwd

Часть 'bb' является произвольным идентификатором и используется для сопоставления префикса с именем пользователя и паролем - удобно для управления различными комбинациями имени пользователя / пароля на разных сайтах (префикс)

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

Для получения дополнительной информации см.: http://hgtip.com/tips/advanced/2009-10-01-configuring-user-auth-https/

Я также рекомендовал бы взглянуть на расширение связки ключей. Поскольку он хранит пароль в кольце ключей вашей системы вместо простого текстового файла, он более безопасен. Он входит в комплект TortoiseHg для Windows, и в настоящее время обсуждается вопрос о его распространении в виде расширения на всех платформах.

Есть три способа сделать это: использовать файл.hgrc, использовать ssh или использовать расширение для ключей


1. НЕПРАВИЛЬНЫЙ способ - обновите файл ~/.hgrc

Формат, который работает для меня (в моем файле ~/.hgrc) это

[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password


Вы можете настроить столько репо, сколько захотите, добавив больше тройки префикса, имени пользователя и пароля, добавив уникальный тег.

Это работает только в Mercurial 1.3, и, очевидно, ваши имя пользователя и пароль в виде обычного текста - не очень хорошо.


2. Безопасный способ - используйте SSH для избежания использования паролей

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


Вы можете найти больше информации о настройке входа без пароля здесь


3. Брелок Расширение

Если вы хотите безопасный вариант, но не знакомы с SSH, почему бы не попробовать это?

Из документов...

Расширение запрашивает пароль HTTP при первом извлечении / отправке в / из заданного удаленного репозитория (как это делается по умолчанию), но сохраняет пароль (определяемый комбинацией имени пользователя и URL удаленного репозитория) в базе паролей. При следующем запуске он проверяет имя пользователя в.hg/hgrc, затем - подходящий пароль в базе данных паролей и использует эти учетные данные, если они найдены.

Более подробная информация здесь

Никто не упомянул расширение ключей. Это сохранит имя пользователя и пароль в системном брелоке, что гораздо более безопасно, чем хранить ваши пароли в статическом файле, как упомянуто выше. Выполните шаги ниже, и вы должны быть в порядке. Я установил это на Ubuntu примерно через 2 минуты.

>> sudo apt-get install python-pip
>> sudo pip install keyring
>> sudo pip install mercurial_keyring

**Edit your .hgrc file to include the extension**
[extensions]
mercurial_keyring = 

https://www.mercurial-scm.org/wiki/KeyringExtension

Простой взлом состоит в том, чтобы добавить имя пользователя и пароль к ссылке в вашем проекте. .hg/hgrc файл:

[paths]
default = http://username:password@mydomain.com/myproject

(Обратите внимание, что таким образом вы сохраняете пароль в виде простого текста)

Если вы работаете над несколькими проектами в одном домене, вы можете добавить правило перезаписи в свой домен. ~/.hgrc файл, чтобы избежать повторения этого для всех проектов:

[rewrite]
http.//mydomain.com = http://username:password@mydomain.com

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

Если вы работаете в Gnome, я объясню, как интегрировать Mercurial и Gnome Keyring здесь:

http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/

Никто выше не объяснил / разъяснил условия для начинающего пользователя. Они запутываются в условиях

.hg / hgrc - этот файл используется для репозитория в локальном / рабочем пространстве / в папке.hg фактического репозитория.

~/.hgrc - этот файл отличается от приведенного ниже. этот файл находится в ~ или домашнем каталоге.

myremote.xxxx =..... bb.xxxx =......

Это одна из строк в разделе / ​​директива [auth] при использовании расширения ртутного набора ключей. Убедитесь, что имя сервера, которое вы там указали, совпадает с тем, которое вы используете при выполнении команды "hg clone", иначе брелок скажет "пользователь не найден". bb или myremote в строке ниже - это "псевдоним", который вы ДОЛЖНЫ дать при выполнении "hg clone http:/.../../repo1 bb или myremote", в противном случае это не сработает, или вы должны убедиться, что ваш локальный Файл репозитория.hg / hgrc содержит тот же псевдоним, т. е. (что вы дали при выполнении hg clone.. в качестве последнего параметра).

PS следующие ссылки для ясных деталей, простите за быстро написанную грамматику.

Например: если внутри ~/.hgrc (домашний каталог пользователя в Linux/Unix) или mercurial.ini в Windows в домашнем каталоге пользователя, содержится следующая строка, и если вы делаете

`"hg clone http://.../.../reponame myremote"`

, тогда вам никогда не будет предложено ввести учетные данные пользователя более одного раза на ссылку HTTP-репо. В ~/.hgrc под [extensions] строка для "mercurial_keyring = " или "hgext.mercurial_keyring = /path/to/your/mercurial_keyring.py" .. одна из этих строк должна быть там.

[auth]
myremote.schemes = http https
myremote.prefix = thsusncdnvm99/hg
myremote.username = c123456

Я пытаюсь выяснить, как установить свойство PREFIX, чтобы пользователь мог клонировать или выполнять любые операции Hg без запросов имени пользователя / пароля и не беспокоясь о том, что он упомянул в http://..../... for имя сервера при использовании ссылки репозитория Hg. Это может быть IP, имя сервера или полное доменное имя сервера

Установка mercurial_keyring на Mac OSX с использованием MacPorts:

sudo port install py-keyring
sudo port install py-mercurial_keyring

Добавьте следующее в ~/.hgrc:

# Add your username if you haven't already done so.
[ui]
username = email@address.com

[extensions]
mercurial_keyring =

Если вы используете TortoiseHg, вам нужно выполнить эти три шага, показанные на прикрепленном снимке экрана, это добавит ваши учетные данные для конкретного репозитория, с которым вы работаете.

Для добавления глобальных настроек вы можете получить доступ к файлу C:\users\user.name\mercurial.ini и добавить раздел

[auth]
bb.prefix=https://bitbucket.org/zambezia/packagemanager
bb.username = $username
bb.password = $password

Надеюсь это поможет.

Хотя это может или не может работать в вашей ситуации, я считаю полезным генерировать открытый / закрытый ключ, используя Pagety Putty.

Если вы также работаете с bitbucket (.org), это должно дать вам возможность предоставить открытый ключ для вашей учетной записи пользователя, и тогда команды, которые обращаются к хранилищу, будут автоматически защищены.

Если Pageant не запускается для вас после перезагрузки, вы можете добавить ярлык для Pageant в свое "меню Пуск" Windows, и для ярлыка может потребоваться заполнить "свойства" местоположением вашего частного (.ppk) файла.,

После этого Mercurial и ваши локальные репозитории должны быть настроены на push/pull с использованием формата SSH.

Вот некоторые подробные инструкции на сайте Atlassian для Windows ИЛИ Mac/Linux.

Вам не нужно верить на мои слова, и нет никаких других способов сделать это. Возможно, эти шаги, описанные здесь больше для вас:

  1. Запустите PuttyGen от Пуск -> PuTTY-> PuttyGen
  2. Сгенерируйте новый ключ и сохраните его как файл.ppk без ключевой фразы
  3. Используйте Putty для входа на сервер, к которому вы хотите подключиться
  4. Добавьте текст открытого ключа из PuttyGen к тексту ~/.ssh/authorized_keys
  5. Создайте ярлык для вашего.ppk файла из Пуск -> Putty to Start -> Startup
  6. Выберите ярлык.ppk в меню "Автозагрузка" (это будет происходить автоматически при каждом запуске)
  7. Видите значок Pageant на панели задач? Щелкните правой кнопкой мыши и выберите "Новая сессия"
  8. Введите имя пользователя @ имя хоста в поле "Имя хоста"
  9. Теперь вы будете входить автоматически.
Другие вопросы по тегам