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

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

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

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

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

Ответ 1

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

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

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

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

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

Ответ 2

Существует три способа сделать это: использовать файл .hgrc, использовать ssh или использовать расширение keyring


1. Способ INSECURE - обновите файл ~/.hgrc

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

[ui]
username=Chris McCauley <[email protected]>

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


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

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


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

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


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


3. Расширение keyring

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

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

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

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

Ответ 3

Никто не упомянул расширение ключей. Это сохранит имя пользователя и пароль в системном брелоке, что гораздо более безопасно, чем хранить ваши пароли в статическом файле, как упомянуто выше. Выполните шаги ниже, и вы должны быть в порядке. Я запустил это в 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

Ответ 4

Простой взлом - это добавить имя пользователя и пароль к URL-адресу push в файле проекта .hg/hgrc:

[paths]
default = http://username:[email protected]/myproject

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

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

[rewrite]
http.//mydomain.com = http://username:[email protected]

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

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

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

Ответ 5

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

.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://..../.... для имени сервера при использовании ссылки репозитория Hg. Это может быть IP, servername или FQDN сервера

Ответ 6

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 protected]

[extensions]
mercurial_keyring =

Ответ 7

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

введите описание изображения здесь

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

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

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

Ответ 8

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

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

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

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

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

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

  • Начать PuttyGen из Start → PuTTY- > PuttyGen
  • Создайте новый ключ и сохраните его как .ppk файл без парольной фразы
  • Используйте Putty для входа на сервер, к которому вы хотите подключиться,
  • Добавить текст открытого ключа из PuttyGen в текст ~/.ssh/authorized_keys
  • Создайте ярлык для вашего .ppk файла из Start → Putty для запуска → Startup
  • Выберите ярлык .ppk из меню "Запуск" (это произойдет автоматически при каждом запуске).
  • См. значок "Значок" на панели задач? Щелкните его правой кнопкой мыши и выберите "Новый сеанс"
  • Введите имя пользователя @hostname в поле "Имя хоста"
  • Теперь вы автоматически входите в систему.