SVN cambiar nombre de usuario

86

Encontré muchos ejemplos sobre cómo cambiar el nombre de usuario para revisiones específicas, etc.

Pero lo que necesito es esto: hice un pago con las credenciales de autenticación de un compañero de trabajo y necesito cambiarlas por mis credenciales para futuras confirmaciones.

No puedo simplemente pagar con mis credenciales debido a los muchos cambios que ya se han realizado ...

¿Alguien familiarizado con esto?

axel freudiger
fuente
¡Interesante pregunta! No parece haber otra manera que borrar todos los datos de autenticación almacenados.
Pekka
@Pekka: Buena respuesta. Sin embargo, la pregunta no era específica de TortoiseSVN.
Raphael Schweikert

Respuestas:

73

Puedes cambiar de usuario con

  • Subversion 1.6 y anteriores:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7 y posterior:

    svn relocate protocol://currentUser@server/path protocol://newUser@server/path
    

Para averiguar qué protocol://currentUser@server/pathes, corre

svn info

en su copia de trabajo.

Ingo Kegel
fuente
4
Recibo un error "svn: E155024: prefijo de URL de origen no válido: 'protocolo: // usuario actual @ servidor / ruta' (no se superpone a la URL de destino 'protocolo: // nuevo usuario @ servidor / ruta')" [con mis URL reales, por supuesto]
James Roth
3
Esto no funciona para esquemas de autenticación http-auth simples. Consulte esta respuesta para saber cómo eliminar las credenciales de usuario guardadas para ese caso de uso. @James, ese es probablemente tu problema.
Caleb
Cosas brillantes ... Gracias :)
Karma
64

La forma más fácil de hacer esto es simplemente usar la opción --username en su próximo pago o confirmación. Por ejemplo:

svn commit --username newUser

o

svn co --username newUser

Luego se almacenará en caché y se usará como nombre de usuario predeterminado para comandos futuros.

Consulte también: En Subversion, ¿puedo ser un usuario que no sea mi nombre de inicio de sesión?

Matt Browne
fuente
Hice eso, y luego svn infoy no veo ningún cambio en la Authorlínea.
vsync
2
Desde el enlace anterior: "cuando Subversion accede al repositorio directamente desde el sistema de archivos, utiliza los permisos del sistema de archivos para acceder al repositorio. (Cuando se conecta a través de un túnel SSH, SVN usa sus permisos FS en el servidor, según lo determine su SSH de inicio de sesión.) Así que svn checkout --username puede no funcionar para su repositorio ".
Matt Browne
1
@MattBrowne es correcto. una ruta como "svn + ssh: //svn.server.com" no respetará el cambio de nombre de usuario. La respuesta aceptada que usa reubicar fue la única forma en que pude cambiarla.
FlipMcF
51

Tuve exactamente el mismo problema y encontré la solución en ¿Dónde almacena el cliente SVN los datos de autenticación de usuario? :

  1. cda ~/.subversion/auth/.
  2. Hacer fgrep -l <yourworkmatesusernameORtheserverurl> */*.
  3. Elimina el archivo encontrado.
  4. La siguiente operación en el repositorio le pedirá nuevamente la información de nombre de usuario / contraseña.

(Para Windows, los pasos son análogos; el authdirectorio está en %APPDATA%\Subversion\).

Tenga en cuenta que esto solo funcionará para esquemas de acceso SVN donde el nombre de usuario es parte del inicio de sesión del servidor, por lo que no sirve para repositorios a los que se accede usando file://.

Raphael Schweikert
fuente
1
Vale la pena señalar que si ejecuta IntelliJ IDEA también debe reiniciar IntelliJ para que los cambios surtan efecto
AndersG
1
el fgrepcomando debe tener un -l, de modo que el comando le indique la ruta del archivo. Iba a editarlo, pero no es suficiente.
vguzmanp
16

El comando que se puede ejecutar:

svn up --username newUsername

Funciona perfectamente ;)

PD: Solo una pista: la opción "--username" se puede ejecutar en cualquier comando "svn", no solo en la actualización.

Aurimas
fuente
5

Si su protocolo es http y está usando Subversion 1.7, puede cambiar de usuario en cualquier momento simplemente usando la opción global --username en cualquier comando.

Cuando el método de Ingo no funcionó para mí, esto fue lo que encontré que funcionó.

Adam Nutt
fuente
3

Ir a Tortoise SVN --> Settings --> Saved Data.

Hay una opción para borrar los datos de autenticación, haga clic en el botón borrar y le permitirá seleccionar para qué conexión desea borrar el ID de usuario / contraseña.

Después de hacer esto, cualquier actividad de pago o actualización, volverá a solicitar el ID de usuario y la contraseña.

Pálido
fuente
2

para Win10, debe eliminar esta carpeta y cerrar / abrir su IDE

C: \ Users \ User \ AppData \ Roaming \ Subversion \ auth

, también en mis proyectos no hay carpetas ".subversion", solo ".svn"

bratez
fuente
1

Además, para aquellos que se dieron cuenta demasiado tarde de que cometieron un error con las credenciales incorrectas, la solución (después del hecho) es cambiar el autor de svn de esa revisión: consulte esta pregunta

Básicamente, la sintaxis es:

svn propset --revprop -r (revision_number) svn:author (new username)
Patrice M.
fuente
1

Basado en la solución de Ingo Kegel, creé un script bash "pequeño" para cambiar el nombre de usuario en todas las subcarpetas. Recuerda:

  1. Cambie <NEW_USERNAME>al nuevo nombre de usuario.
  2. Cambie <OLD_USERNAME>al nombre de usuario actual (si actualmente no tiene un nombre de usuario establecido, simplemente elimínelo <OLD_USERNAME>@).

En el código siguiente, el comando svn solo se imprime (no se ejecuta). Para ejecutar el comando svn, simplemente elimine el echoespacio en blanco y delante de él (justo arriba popd).

for d in */ ; \
do echo $d ; pushd $d ; \
url=$(svn info | grep "URL: svn") ; \
url=$(echo ${url#"URL: "}) ; \
newurl=$(echo $url | sed "s/svn+ssh:\/\/<OLD_USERNAME>@/svn+ssh:\/\/<NEW_USERNAME>@/") ; \
echo "Old url: "$url ; echo "New url: "$newurl ; \
echo svn relocate $url $newurl ; \
popd ; \
done

¡Esperamos que te sea útil!

zpon
fuente
0

Creo que podría crear su propia rama (usando su propia credencial) desde el mismo tronco que la rama de su compañero de trabajo, fusionar desde la rama de su compañero de trabajo a su copia de trabajo y luego fusionar desde su rama. Todo compromiso futuro debe estar marcado como proveniente de usted.

Martín
fuente
0

Puede pedirle a su colega que cree un parche, que colapsará todos los cambios que se han realizado en un solo archivo que puede aplicar a su propio pago. Esto actualizará todos sus archivos de manera adecuada y luego podrá revertir los cambios de su lado y registrar los suyos.

Alex
fuente