2008-08-29 22 views
45

Cuando intento hacer un comando svn y suministrar las opciones --username y/o --password, de todos modos me pide mi contraseña, y siempre intentaré usar mi usuario actual en lugar del especificado por --username. Ni --no-auth-cache ni --non-interactive tienen ningún efecto sobre esto. Esto es un problema porque estoy tratando de llamar a los comandos svn desde un script, y no puedo permitir que muestre el mensaje.Subversion ignorando las opciones "--password" y "--username"

Por ejemplo, registran en como usuario1:

# $ svn update --username 'user2' --password 'password' 
# [email protected]'s password: 

Otras opciones funcionan correctamente:

# $ svn --version --quiet 
# 1.3.2 

¿Por qué me impulsan?
¿Y por qué está pidiendo la contraseña de usuario1 en lugar de la de usuario2?
Estoy 99% seguro de que todos mis permisos están configurados correctamente. ¿Hay alguna opción de configuración para svn que apague las contraseñas de la línea de comandos?
¿O es algo totalmente diferente?

Estoy ejecutando svn 1.3.2 (r19776) en Fedora Core 5 (Bordeaux).


Aquí hay una lista de mis variables de entorno (con información confidencial X 'eliminada). Ninguno de ellos parece aplicarse a SVN:

# HOSTNAME=XXXXXX 
# TERM=xterm 
# SHELL=/bin/sh 
# HISTSIZE=1000 
# KDE_NO_IPV6=1 
# SSH_CLIENT=XXX.XXX.XXX.XXX XXXXX XX 
# QTDIR=/usr/lib/qt-3.3 
# QTINC=/usr/lib/qt-3.3/include 
# SSH_TTY=/dev/pts/2 
# USER=XXXXXX 
# LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35: 
# KDEDIR=/usr 
# MAIL=/var/spool/mail/XXXXXX 
# PATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin 
# INPUTRC=/etc/inputrc 
# PWD=/home/users/XXXXXX/my_repository 
# KDE_IS_PRELINKED=1 
# LANG=en_US.UTF-8 
# SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass 
# SHLVL=1 
# HOME=/home/users/XXXXXX 
# LOGNAME=XXXXXX 
# QTLIB=/usr/lib/qt-3.3/lib 
# CVS_RSH=ssh 
# SSH_CONNECTION=69.202.73.122 60998 216.7.19.47 22 
# LESSOPEN=|/usr/bin/lesspipe.sh %s 
# G_BROKEN_FILENAMES=1 
# _=/bin/env 
# OLDPWD=/home/users/XXXXXX 
+0

No lo sé * nix proyectiles, pero, ¿estás usando las comillas simples allí? ¿No deberían ser comillas dobles? –

+0

¿Alguna configuración personalizada dentro de su $ HOME/.subversion tal vez? – Joril

Respuesta

29

El mensaje que le aparece no parece que Subversion le pida una contraseña, parece que ssh le pide una contraseña. Así que supongo que ha comprobado un svn + ssh: // checkout, no un svn: // o http: // o https: // checkout.

IIRC todas las opciones que está tratando solo funcionan para las comprobaciones svn/http/https. ¿Puedes ejecutar svn info para confirmar qué tipo de repositorio estás utilizando?

Si está utilizando ssh, debe configurar la autenticación basada en claves para que sus scripts funcionen sin pedir una contraseña.

0

Lo mejor que puedo darle es un "funciona para mí" en SVN 1.5. Puede intentar agregar --no-auth-cache a su svn update para ver si eso le permite anular más fácilmente.

Si desea cambiar permanentemente de user2 a user1, diríjase a ~/.subversion/auth/on * nix y elimine el archivo de autenticación de caché para domain.com (muy probablemente en ~/.subversion/auth/svn. simple/- simplemente léalos y encontrarás el que quieres soltar). Si bien es posible actualizar el caché de autenticación actual, también debes asegurarte de actualizar los tokens de longitud. Más simple solo para que se le solicite nuevamente la próxima vez que actualice.

41

¿De verdad tiene las comillas simples en su comando? No creo que sean necesarios. Además, creo que también necesita --no-auth-cache y --non-interactive

Esto es lo que yo uso (no hay comillas simples)

 
--non-interactive --no-auth-cache --username XXXX --password YYYY 

Véase el Client Credentials Caching documentation in the svnbook para más información.

+3

éste trabajó para mí ... muchas gracias – Anuragh27crony

+1

Esto no funciona para svn + ssh. –

0

El problema es que la copia de trabajo se ha extraído a través de svn + ssh (gracias, Thomas).En lugar de configurar las claves ssh como se sugirió, acabo de comprobar una nueva copia de trabajo usando svn: //domain.com/path/to/repo en lugar de svn + ssh: //domain.com/path/to/repo. Debido a que esta copia de trabajo está en la misma máquina que el repositorio en sí, realmente no me estoy perdiendo nada, y ahora puedo usar las opciones --password y --username gratuitamente. Parece obvio ahora que lo pienso.

17

Tuve el mismo problema y lo resolví configurando mi archivo ~/.ssh/config para usar explícitamente el nombre de usuario correcto (es decir, el que usa para iniciar sesión en el servidor, no en su máquina local). Así, por ejemplo:

 
Host server.hostname 
    User username 

me encontré con este post del blog útil: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html

+2

sí - el enlace publicado es una forma muy simple de resolver este problema. ¡Gracias! – jsh

0

mirada a su repositorio SVN local y miro a Svn directorio. existe archivo: Las entradas se ven en ellos y verá líneas comienza con: svn + ssh: //

Ésta es su primera configuración maked por svn checkout 'repo_source' o svn co 'repo_source'

si desea cambiar esto, la mejor manera es actualizar completamente este repositorio. actualizar/cometer lo que debe para guardar el trabajo. a continuación, eliminar el directorio completamente y último paso es crear esto svn co/checkout 'URI-para-principal-repo' [directorio opcionalmente local para tienda]

hay que seleccionar el método de conexión a repo file: // svn + ssh: // http: // https: // u otro descrito en la documentación.

Después de eso, usa svn update/commit como de costumbre.

este tema parece estar fuera del tema. mejor ve a las páginas de superusuario.

0

Tuve un problema similar, quería utilizar un nombre de usuario diferente para un repositorio svn + ssh. Al final, he utilizado svn relocate (como se describe en in this answer En mi caso, estoy usando SVN 1.6.11 y hice lo siguiente:.

svn switch --relocate \ 
    svn+ssh://[email protected]/path/to/repo \ 
    svn+ssh://[email protected]/path/to/repo 

donde svn+ssh://[email protected]/path/to/repo se pueden encontrar en la salida URL: línea de comandos svn info Este comando me pidió la contraseña de newuser.

Tenga en cuenta que este cambio es persistente, es decir, si solo desea cambiar temporalmente al nuevo nombre de usuario con este método, tendrá que emitir un comando similar nuevamente después de svn update etc.

Cuestiones relacionadas