apache - Empuje mercurial, abortar: la autorización falló
https apache2 (7)
Tengo problemas para empujar al repositorio mercurial:
$ hg push
pushing to https://user:***@hg.domain.com/X_repo
searching for changes
abort: authorization failed
Se puede acceder a la misma URL (con las mismas credenciales) a través del navegador web. Además, lo intenté sin incrustar usr + pass en la URL.
HTTPS está configurado correctamente, probé la autenticación básica y de resumen, sin suerte.
Tirar (a través de HTTP) funciona bien.
Estoy usando hgwebdir para servir mi repositorio.
¿Qué más debo verificar?
Encontré esto: http://code.google.com/p/support/issues/detail?id=2580 En mi caso, no es aleatorio, sucede cada vez.
Parte relevante de mi conf de vhost:
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)
Curiosamente, hg saliente funciona 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: ...
El problema resultó ser repo dir permisos. chown www-data
resolvió ...
En caso de que pueda ayudar a alguien, me encontré con este error por razones desconocidas, todos los permisos estaban bien, y solo reiniciar apache lo resolvió.
Es extraño que pueda ejecutar hg outgoing
pero no hg push
ya que entiendo que ambos se autentican de la misma manera.
Lamentablemente, no soy un experto en hgweb. Envíe por correo a la lista de Mercurial ([email protected]) y / o entre en línea en IRC ( #mercurial
en irc.freenode.net
). Habrá muchas más personas para ayudarlo allí. El IRC es especialmente bueno ya que estas cosas son mucho más fáciles de depurar de forma interactiva.
Esto me sucedió después de cambiar mi contraseña de bitbucket, luego, aunque utilicé SourceTree para administrar mi contraseña y la cambié a nivel mundial, un repositorio sin embargo tenía mi contraseña antigua codificada en REPO/.hg/hgrc
cambió la línea y todo vuelve a funcionar
Mi problema fue un poco diferente. El cambio de contraseña lo activó ... Y tuve un repo/.hgrc
y un repo/.hg/hgrc
. No estoy seguro de por qué, pero estos fueron contradictorios.
Para el registro, la forma más limpia que he encontrado es mantener un archivo de configuración global (en Windows C:/Users/<user>/mercurial.ini
o Linux / /home/<user>/.hgrc
) con toda la configuración que se aplica a todos los repositorios (perfiles, complementos / extensiones, repositorios, etc.), y luego por repositorios, simplemente use algo como:
[paths]
default = https://path/to/remote/repo
# any other repo-specific config
No sé por qué tenía otro archivo de configuración mercurial específico del repositorio, ahora todo está limpio y funciona bien.
Para aquellos con TortoiseHg presionando a un servidor web (otro usuario no autorizado en otra PC):
En TortoiseHg: File - Settings - (Either globally or just for the current repository - tabs)
entonces la configuración del Server
. Servidor web
Push Requires SSL - No
Allow Push - *
Esto hace lo mismo a través de la interfaz de usuario que la respuesta de lukmdo
anterior (edición del archivo hgrc).
Si alguien quiere hacer que se ejecute en una máquina local, entonces agregar esto al servidor REPO/.hg/hgrc
hará el trabajo:
[web]
allow_push = *
push_ssl = false
como se describe en este sitio .