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: ...
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.
Problem turned out to be repo dir permissions. chown www-data
solved it...
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).
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.
Just in case it might help someone - I encountered this error for unknown reasons, all permissions were OK, and just restarting apache solved it.
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.
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