2009-06-03 11 views
42

estoy teniendo problemas con empujar al repositorio mercurial:empuje Mercurial, abortar: Error de autorización

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

la misma URL (con las mismas credenciales) es accesible 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 Digestiva - sin suerte.

Tirar (a través de HTTP) funciona bien.

Estoy usando hgwebdir para servir mi repositorio.

¿Qué más debo comprobar?

Encontré esto: http://code.google.com/p/support/issues/detail?id=2580 En mi caso no es aleatorio, sucede cada vez.

Parte pertinente de mi host virtual 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) 

extraño que parezca obras salientes hg 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:  ... 

Respuesta

18

Problema que resultó ser permisos dir repo. chown www-data lo resolvió ...

+13

No olvide que también necesita allow_push en la sección [web] de .hg/hgrc –

+6

$ sudo chown -R wwwrun: www/srv/www/htdocs/hg/reposfrom https: //www.mercurial-scm .org/wiki/HgWebDirStepByStep Sección 7, para aquellos que no son tan buenos con Linux. – bulltorious

+1

Para aquellos que usan Ubuntu: sudo chown -R www-data: www-data/var/hg/repos – Houman

3

Se es extraño que puede ejecutar hg outgoing pero no hg push ya que es mi entendimiento que ambos se autentican de la misma manera.

Desafortunadamente no soy un experto en hgweb. Envíe un correo electrónico al Mercurial list ([email protected]) y/o visite el 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.

+1

Gracias por su sugerencia. De hecho, ya probé el IRC, sin suerte:/Lo intentaré con la lista de correo. –

1

Solo en caso de que pueda ayudar a alguien - Encontré este error por razones desconocidas, todos los permisos estaban bien, y solo reiniciando apache lo resolvió.

48

Si alguien quiere hacer que se ejecute en la máquina local, entonces añadir esto a REPO/.hg/hgrc servidor hará el trabajo:

[web] 
allow_push = * 
push_ssl = false 

como se describe en this site.

+1

He probado allow_push = * o ambos me siguen dando autenticación fracaso –

3

Para aquellos con TortoiseHg empujando a un servidor web (otro usuario no autorizado en otro PC):

En TortoiseHg: File - Settings - (Either globally or just for the current repository - tabs) entonces los ajustes Server. servidor Web

Push Requires SSL - No 
Allow Push - * 

Esto hace lo mismo a través de la interfaz de usuario como respuesta lukmdo 's más arriba (la edición del archivo hgrc).

0

Esto me sucedió después de cambiar la contraseña bitbucket, a continuación, aunque he usado SourceTree para gestionar mi contraseña y me lo cambió globaly, una cesión temporal sin embargo tenía mi antigua contraseña modificable en REPO/.hg/hgrc cambió la línea y todo funciona de nuevo

0

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 manera 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 cesión temporal, sólo tiene que utilizar algo como:

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

# any other repo-specific config 

por qué tuve otro archivo de configuración mercurial-repo específica, no sé - ahora todo se limpia y trabajando muy bien.

Cuestiones relacionadas