Как сохранить имя пользователя и пароль с Mercurial? - PullRequest
266 голосов
/ 06 апреля 2010

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

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

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

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

Ответы [ 8 ]

323 голосов
/ 07 апреля 2010

Вы можете создать раздел авторизации в файле .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/

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

167 голосов
/ 06 апреля 2010

Есть три способа сделать это: использовать файл .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, затем для подходящего пароля в база паролей и использует эти учетные данные, если они найдены.

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

64 голосов
/ 11 января 2011

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

30 голосов
/ 06 апреля 2010

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

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

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

Если вы работаете над несколькими проектами в одном домене, вы можете добавить правило rewrite в ваш файл ~/.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/

23 голосов
/ 11 января 2013

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

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

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

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

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

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

ex: Если внутри ~ / .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, имя сервера или полное доменное имя сервера

3 голосов
/ 21 сентября 2012

Установка 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 =
2 голосов
/ 19 июля 2017

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

enter image description here

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

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

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

0 голосов
/ 24 августа 2016

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

Если вы также работаете с 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 файла из Пуск -> Замазка в Пуск -> Запуск
  6. Выберите ярлык .ppk в меню «Автозагрузка» (это будет происходить автоматически при каждом запуске)
  7. Видите значок Pageant на панели задач? Щелкните правой кнопкой мыши и выберите «Новый сеанс»
  8. Введите имя пользователя @ имя хоста в поле «Имя хоста»
  9. Теперь вы будете входить автоматически.
...