Как я могу получить hg для запроса моего имени пользователя/пароля HTTP на cygwin/windows?

В домашних условиях это работает отлично. Сейчас я на другом компьютере (используя cygwin), и hg push не будет запрашивать имя пользователя/пароль:

[email protected] /cygdrive/d/repos/upthescala/viewprotect
$ hg push https://viewprotect.googlecode.com/hg/
pushing to https://viewprotect.googlecode.com/hg/
searching for changes
abort: http authorization required

Вот содержимое моего ~/.hgrc:

[http_proxy]
host=someproxy:8080

[ui]
username = My Name <myemail>

Заранее благодарим за любой совет!

Примечание: это, по-видимому, проблема cygwin. Когда я пытаюсь выполнить запрос Windows (cmd.exe), он работает как ожидалось:

D:\repos\upthescala\viewprotect>hg push https://viewprotect.googlecode.com/hg/
pushing to https://viewprotect.googlecode.com/hg/
searching for changes
http authorization required
realm: Google Code Mercurial Repository
user: myemailaddress
password: *********

remote: Success.

- LES

Ответ 1

Это может быть вызвано использованием версии Mercurial, привязанной к подсистеме консоли Windows. Бинар, распределенный с черепахой, попадает в эту категорию. Если это так, Mercurial ожидает использовать консольную подсистему для запроса учетных данных, но она не находит ее при запуске из оболочки Cygwin. В моем случае, установка и использование Cygwin версии mercurial исправила проблему, в дополнение к фиксации цветопередачи. Чтобы проверить, какую версию вы используете, запустите "which hg" (но вы, вероятно, уже знали это).

Ответ 2

Чтобы добавить комментарий Andrew:

установка и использование Cygwin версии mercurial исправила проблему,

Это также устранило проблему для меня, но это вызвало еще одну проблему, которая заняла у меня некоторое время, чтобы понять. При использовании Cygwin-версии hg все файлы, которые были клонированы под TortoiseHG, были изменены, когда я запускал hg status, но никаких различий не было показано ни для одного из них, когда я запускал hg diff.

Проблема заключалась в том, что разрешения не совпадали. Запуск chmod 644 .* -R в каждом репо разрешил эту проблему.

Ответ 3

Так как это HTTP, вы всегда можете указать имя пользователя и пароль в URL-адресе. Это работает на любом веб-сайте, используя http auth и в любом браузере.

hg push https://myemailaddress:*********@viewprotect.googlecode.com/hg/

В качестве альтернативы более новые версии Mercurial имеют раздел auth, который вы можете использовать.

Кстати, это страшный пароль. Вы должны придумать что-то лучше восьми звезд.