Mercurial push, abort: авторизация не удалась - PullRequest
46 голосов
/ 03 июня 2009

У меня проблемы с отправкой в ​​ртутный репозиторий:

$ hg push
pushing to https://user:***@hg.domain.com/X_repo
searching for changes
abort: authorization failed

Этот же URL-адрес (с теми же учетными данными) доступен через веб-браузер. Кроме того, я попробовал это, не вставляя usr + pass в URL.

HTTPS настроен правильно, я попробовал и Basic, и Digest auth - без везения.

Тяга (через HTTP) работает нормально.

Я использую hgwebdir для обслуживания моего репо.

Что еще я должен проверить?

Я нашел это: http://code.google.com/p/support/issues/detail?id=2580 В моем случае это не случайно, это происходит каждый раз.

Соответствующая часть моего vhost conf:

  WSGIScriptAlias  /  /home/(...)/hgwebdir.wsgi

  <Directory /home/(...)>
    AuthType Basic
    AuthUserFile /(...)/basic-password
    AuthName (...)
    Require valid-user

    Order deny,allow
    Allow from all
  </Directory>

$ hg -v
Mercurial Distributed SCM (version 1.0.2)

Как ни странно, исходящие hg работают нормально:

$ hg outgoing
comparing with https://hg.domain.com/X_repo
http authorization required
realm: ...
user: ...
password: 
searching for changes
changeset:   64:...
tag:         tip
user:        ...
date:        ...
summary:     ...

Ответы [ 7 ]

52 голосов
/ 01 октября 2010

Если кто-то захочет запустить его на локальной машине, тогда добавив это на сервер REPO/.hg/hgrc сделает работу:

[web]
allow_push = *
push_ssl = false

как описано на этом сайте .

20 голосов
/ 06 июня 2009

Проблема оказалась в разрешениях на репо. chown www-data решил это ...

3 голосов
/ 29 апреля 2013

Для тех, у кого TortoiseHg работает с веб-сервером (другой неавторизованный пользователь на другом ПК):

В TortoiseHg: File - Settings - (Either globally or just for the current repository - tabs), затем Server. Веб-сервер

Push Requires SSL - No
Allow Push - *

Это делает через интерфейс то же самое, что и ответ lukmdo выше (редактирование файла hgrc).

3 голосов
/ 04 июня 2009

Это странно, что вы можете запустить hg outgoing, но не hg push, поскольку, насколько я понимаю, они оба аутентифицируются одинаково.

К сожалению, я не эксперт по hgweb. Пожалуйста, отправьте список Mercurial (mercurial@mercurial-scm.org) и / или зайдите в IRC (#mercurial на irc.freenode.net). Там будет гораздо больше людей, чтобы помочь вам там. IRC особенно хорош, потому что эти вещи намного легче отладить в интерактивном режиме.

1 голос
/ 13 августа 2010

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

0 голосов
/ 25 мая 2016

Моя проблема была немного другой. Изменение пароля вызвало это ... И у меня были repo/.hgrc и repo/.hg/hgrc. Не уверен почему, но они были противоречивы.

Для справки, самый чистый способ, который я нашел, - это сохранить глобальный файл конфигурации (в Windows C:\Users\<user>\mercurial.ini или Linux /home/<user>/.hgrc) со всей конфигурацией, которая применяется ко всем репозиториям (профилям, плагинам / расширениям, репозиториям). и т. д.), а затем в репо просто используйте что-то вроде:

[paths]  
default = https://path/to/remote/repo

# any other repo-specific config

Почему у меня был другой специфичный для репозитория mercurial config файл, я не знаю - теперь все вычищено и работает хорошо.

0 голосов
/ 17 марта 2014

Это случилось со мной после смены пароля для моего bitbucket, но, хотя я использовал SourceTree для управления паролем и изменил его глобально, в одном репо мой старый пароль был жестко задан в REPO/.hg/hgrc, изменив строку, и все снова работает

...