2009-06-03 9 views
42

У меня возникли проблемы с нажатием на ртутный хранилища:Mercurial толчок, прервать: Ошибка авторизации

$ 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 В моем случае это не случайно, это происходит каждый раз.

Соответствующая часть моего ВХост конф:

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:  ... 

ответ

18

Проблема оказалась доступной для репо. chown www-data ...

+13

Не забывайте, что вы также должны проталкивания в [веб] раздел вашего .hg/hgrc –

+6

$ Sudo Чаун -R wwwrun: WWW/SRV/WWW/HTDOCS/HG/reposfrom https: //www.mercurial-scm .org/wiki/HgWebDirStepByStep Раздел 7, для тех, кто не очень хорош с Linux. – bulltorious

+1

Для тех, кто использует Ubuntu: Sudo Чаун -R WWW-данных: WWW-данные/вар/HG/хранилищу – Houman

3

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

К сожалению, я не эксперт по hgweb. Отправьте по электронной почте Mercurial list ([email protected]) и/или зайдите в IRC (#mercurial по телефону irc.freenode.net). Там будет еще много людей, чтобы помочь вам там. IRC особенно хорош, поскольку эти вещи намного проще отлаживать в интерактивном режиме.

+1

Спасибо за предложения. Я на самом деле уже пробовал IRC - без везения:/Я попробую с списком рассылки. –

1

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

48

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

[web] 
allow_push = * 
push_ssl = false 

, как описано в this site.

+1

я испытал проталкивания = * или оба все еще дает мне проверку подлинности отказ –

3

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

В TortoiseHg: File - Settings - (Either globally or just for the current repository - tabs) тогда Server настройки. Web Server

Push Requires SSL - No 
Allow Push - * 

Это делает то же самое с помощью пользовательского интерфейса, как ответ lukmdo «s выше (редактирование файла hgrc).

0

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

0

Моя проблема была немного иной. Изменение пароля вызвало это ... И у меня были 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 

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