Mercurial push, abort: authorization failed

给你一囗甜甜゛ 提交于 2019-12-31 08:43:43

问题


I'm having problems with pushing to mercurial repository:

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

The same URL (with the same credentials) is accessible through the web browser. Also, I tried it without embedding usr+pass into the URL.

HTTPS is correctly configured, I tried both Basic and Digest auth -- without a luck.

Pulling (through HTTP) works fine.

I'm using hgwebdir to serve my repo.

What else should I check?

I found this: http://code.google.com/p/support/issues/detail?id=2580 In my case it's not random, it happens every single time.

Relevant part of my 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)

Strangely enough hg outgoing works ok:

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

回答1:


If anybody wants to make it run on local machine then adding this to server REPO/.hg/hgrc will do the work:

[web]
allow_push = *
push_ssl = false

as described at this site.




回答2:


Problem turned out to be repo dir permissions. chown www-data solved it...




回答3:


For those with TortoiseHg pushing to a web server (another unauthorized user on another PC):

In TortoiseHg: File - Settings - (Either globally or just for the current repository - tabs) then the Server settings. Web Server

Push Requires SSL - No
Allow Push - *

This does the same thing through the UI as lukmdo's answer above (editing the hgrc file).




回答4:


It is strange that you can run hg outgoing but not hg push since it is my understanding that they both authenticate in the same way.

Unfortunately I'm not a hgweb expert. Please mail to the Mercurial list (mercurial@mercurial-scm.org) and/or come online in IRC (#mercurial on irc.freenode.net). There will be many more people to help you there. IRC is especially good since these things are much easier to debug interactively.




回答5:


Just in case it might help someone - I encountered this error for unknown reasons, all permissions were OK, and just restarting apache solved it.




回答6:


My problem was a bit different. Password change triggered it... And I had a repo/.hgrc and a repo/.hg/hgrc. Not sure why, but these were conflicting.

For the record, the cleanest way I've found is to keep a global configuration file (on Windows C:\Users\<user>\mercurial.ini or Linux /home/<user>/.hgrc) with all the configuration that applies to all repositories (profiles, plugins/extensions, repos, etc), and then per repo, just use something like:

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

# any other repo-specific config

Why I had another repo-specific mercurial config file, I don't know -- now everything is cleaned up and working nicely.




回答7:


This happened to me after changing my bitbucket password, then although I used SourceTree to manage my password and I changed it globaly, one repo however had my old password hard-coded in REPO/.hg/hgrc changed the line and all works again



来源:https://stackoverflow.com/questions/946745/mercurial-push-abort-authorization-failed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!