En Subversion, ¿puedo ser un usuario que no sea mi nombre de usuario?

253

Me gustaría saber cómo Subversioncambiar el nombre con el que aparecen mis cambios.

Estoy empezando a usar Subversion. Actualmente lo estoy usando para el código de control de versiones en una computadora portátil XP donde siempre estoy conectado con el nombre de mi esposa. Me gustaría que el DB de subversión muestre los cambios bajo mi nombre.

Más tarde replicaré el DB para que sea accesible a toda la casa. Mi esposa usa la computadora de la oficina donde siempre está conectada con mi nombre. Probablemente lo configure para que registre automáticamente los documentos modificados ... preferiblemente bajo su nombre.

Eventualmente lo usaré desde una máquina Linux con otro nombre de usuario.

¿Hay alguna forma de modificar el entorno del usuario para cambiar el nombre de usuario que Subversion le llama? Esperaría algo como una configuración SVN_USERNAME='Mark'que anularía, sin embargo, generalmente recibe el nombre.

Actualización: Parece que la --usernamebandera a la que se refirió Michael funciona para cambiar el nombre informado "svn stat", incluso para archivos locales: repositorios. Además, es pegajoso, por lo que no necesita especificarlo para el siguiente comando. Incluso reinicié y todavía usó el "--username"valor de mi arranque anterior.

mercados
fuente

Respuestas:

280

La mayoría de los comandos de Subversion toman la --usernameopción de especificar el nombre de usuario que desea usar en el repositorio. Subversion recuerda el último nombre de usuario y contraseña del repositorio utilizados en cada copia de trabajo, lo que significa, entre otras cosas, que si lo usa svn checkout --username myuser, nunca tendrá que volver a especificar el nombre de usuario.

Como dice Kamil Kisiel , cuando Subversion accede al repositorio directamente desde el sistema de archivos (es decir, la URL del repositorio es de forma file:///path/to/repoo file://file-server/path/to/repo), utiliza los permisos del sistema de archivos para acceder al repositorio. Y cuando se conecta a través de un túnel SSH ( svn+ssh://server/path/to/repo), SVN usa sus permisos FS en el servidor , según lo determine su inicio de sesión SSH. En esos casos, svn checkout --usernamepuede no funcionar para su repositorio.

Michael Ratanapintha
fuente
Gracias por la rápida respuesta. La bandera --username parece ser muy pegajosa, incluso en los reinicios. Y funciona bien en mi archivo: repositorio.
comercializa el
70

Para svn sobre ssh intente:

svn list svn+ssh://[user_name]@server_name/path_to_repo  

svn le pedirá la user_namecontraseña de.

aminálido
fuente
1
No funciona con nombres de usuario como: [email protected]
neoneye
44
https://user_name@.../pathno funcionó para mí (cygwin) pero --usernamefunciona bien.
zelanix
44

Puede configurar un nombre de usuario predeterminado a través de ~ / .subversion / Server:

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

Tenga en cuenta que las versiones anteriores de svn no lo admiten (por ejemplo, 1.3.1 [sic!]).

azulado
fuente
37
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn"

Me funcionó cuando estaba en otra cuenta de usuario. Sin embargo, se le pedirá que ingrese el nombre de usuario / contraseña nuevamente. Debe iniciar sesión como lo anterior una vez y ya está todo listo para los tiempos posteriores (a menos que reinicie su máquina).

chethan
fuente
44
Tenga cuidado al proporcionar la contraseña en la línea de comando. Cualquiera que pueda ver la lista de procesos en la máquina podrá ver la contraseña en la lista de procesos. Está bien en un sistema de usuario único, pero no tan bueno en un sistema multiusuario.
bleater
12

Si necesita especificar un nombre de usuario distinto de su usuario conectado para usar con svn + ssh, simplemente agregue una entrada a su archivo .ssh / config :

Host example.com
Usuario jdoe
Aaron Dancygier
fuente
man ssh_config te contará todo al respecto. Todavía no he encontrado la manera de hacer esta dinámica (por ejemplo, basada en la variable de entorno).
bbaassssiiee
11

Subversion generalmente me pide mi "nombre de usuario de Subversion" si falla al usar mi nombre de usuario conectado. Entonces, cuando soy flojo (por lo general), solo dejaré que me pida mi contraseña y presionaré enter, y esperaré la solicitud del nombre de usuario y usaré mi nombre de usuario de Subversion.

De lo contrario, la solución de Michael es una buena manera de especificar el nombre de usuario de inmediato.

Beau Simensen
fuente
1
Considero que esta es una mejor respuesta porque funciona para todos los comandos SVN (checkout, commit, etc.) donde la bandera --username parece no existir o es ligeramente diferente para varios comandos ...
edwardsharp 03 de
7

La mayoría de las respuestas parecen ser para svn + ssh, o no parecen funcionar para nosotros.

Para el acceso http, la forma más fácil de cerrar la sesión de un usuario SVN desde la línea de comandos es:

rm ~/.subversion/auth/svn.simple/*

Punta de sombrero: http://www.yolinux.com/TUTORIALS/Subversion.html

Danny Schoemann
fuente
6

Usando Subversion con el módulo Apache o svnserve. He podido realizar operaciones como usuarios múltiples usando --username.

Cada vez que invoque un comando Subversion como un usuario 'nuevo', su $HOME/.subversion/auth/<authentication-method>/directorio tendrá una nueva entrada en caché para ese usuario (suponiendo que pueda autenticarse con la contraseña correcta o el método de autenticación para el servidor con el que se está contactando como ese usuario en particular) .

Don Wakefield
fuente
2

Si está utilizando svn + ssh para conectarse al repositorio, lo único que lo autentica y autoriza son sus credenciales ssh. TODO lo demás se ignora. Su nombre de usuario se registrará en subversion exactamente como se establece en su conexión ssh. Una excelente explicación de esto está en jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

codeMonster
fuente
2

Vaya a ~/.subversion/auth/svn.simple/*y verá una lista de archivos que contiene la información sobre su cuenta de usuario svn. Simplemente elimine todos los demás que no necesita.

Después de eso, cuando haga algo relacionado con la operación de SVN, como commit, rm, etc. Se le pedirá nuevamente que ingrese el nombre de usuario o las contraseñas.

Alan Dong
fuente
-1

TortoiseSVN siempre solicita nombre de usuario. (a menos que le diga que no lo haga)

recursivo
fuente
No, no lo hace. No en 1.9.5 para Linux, al menos.
drkvogel
Utiliza su nombre de usuario local de forma predeterminada, que no siempre es lo que desea cuando se conecta a un repositorio remoto.
drkvogel
-3

Creo que puede configurar la SVN_USERvariable de entorno para cambiar su nombre de usuario SVN.

Sophie Alpert
fuente
3
¿Puedes proporcionar una referencia para eso? Hice una búsqueda y encontré solo svn_username, que es un parche que alguien hizo y no puedo decir si llegó a la línea principal o no ... Creo que habría encontrado otros resultados si es así.
comercializa el