apache mercurial https apache2 repository

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 .