J'ai des problèmes pour envoyer dans le dépôt Mercurial:
$ hg Push
pushing to https://user:***@hg.domain.com/X_repo
searching for changes
abort: authorization failed
La même URL (avec les mêmes informations d'identification) est accessible via le navigateur Web. En outre, je l'ai essayé sans incorporer usr + pass dans l'URL.
HTTPS est correctement configuré, j'ai essayé à la fois l'authentification de base et l'authentification Digest - sans aucune chance.
Tirer (via HTTP) fonctionne bien.
J'utilise hgwebdir pour servir ma pension.
Que dois-je vérifier?
J'ai trouvé ceci: http://code.google.com/p/support/issues/detail?id=2580 Dans mon cas, ce n'est pas aléatoire, cela se produit à chaque fois.
Partie pertinente de ma 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)
Curieusement, hg sortant fonctionne bien:
$ 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: ...
Problème s'est avéré être des autorisations de repo dir. chown www-data
l'a résolu ...
Si quelqu'un veut le faire fonctionner sur une machine locale, alors l'ajout de ceci au serveur REPO/.hg/hgrc
fera le travail:
[web]
allow_Push = *
Push_ssl = false
comme décrit sur ce site .
Pour ceux avec TortoiseHg poussant sur un serveur Web (un autre utilisateur non autorisé sur un autre PC):
Dans TortoiseHg: File - Settings - (Either globally or just for the current repository - tabs)
puis les Server
settings . Web Server
Push Requires SSL - No
Allow Push - *
Cela fait la même chose dans l'interface utilisateur que la réponse de lukmdo
ci-dessus (édition du fichier hgrc).
C’est est étrange que vous puissiez exécuter hg outgoing
mais pas hg Push
car je crois comprendre qu’ils s’authentifient tous les deux de la même manière.
Malheureusement, je ne suis pas un expert en web. Envoyez un courrier à la liste Mercurial ([email protected]) et/ou connectez-vous en ligne dans IRC - (#Mercurial
sur irc.freenode.net
). Il y aura beaucoup plus de personnes pour vous aider. IRC est particulièrement utile, car ces éléments sont beaucoup plus faciles à déboguer de manière interactive.
Juste au cas où cela pourrait aider quelqu'un - j'ai rencontré cette erreur pour des raisons inconnues, toutes les autorisations étaient OK, et le simple redémarrage d'Apache l'a résolu.
Cela m'est arrivé après avoir changé mon mot de passe bitbucket, puis bien que j'aie utilisé SourceTree pour gérer mon mot de passe et que je l'ai changé globalement, un référentiel avait cependant mon ancien mot de passe codé en dur dans REPO/.hg/hgrc
qui a changé la ligne et tout fonctionne à nouveau
Mon problème était un peu différent. Le changement de mot de passe l'a déclenché ... Et j'avais un repo/.hgrc
et un repo/.hg/hgrc
. Je ne sais pas pourquoi, mais ils étaient en conflit.
Pour mémoire, le moyen le plus propre que j’ai trouvé est de conserver un fichier de configuration global (sous Windows C:\Users\<user>\Mercurial.ini
ou Linux /home/<user>/.hgrc
) avec toute la configuration qui s’applique à tous les référentiels (profils, plugins/extensions, pensions, etc.), puis respectée. repo, utilisez juste quelque chose comme:
[paths]
default = https://path/to/remote/repo
# any other repo-specific config
Pourquoi j’avais un autre fichier de configuration Mercurial spécifique au référentiel, je ne sais pas - maintenant tout est nettoyé et fonctionne correctement.