2010-01-07 16 views
24

¿Cómo obtener el usuario actual que está utilizando svn en una estación de trabajo en particular?Svn get current user

puedo usar el ejecutable svn.exe con algún modificador para obtener esa información.

Gracias.

+2

Con el cliente SVN actualizado puede ejecutar ['svn auth'] (https://stackoverflow.com/a/44678232/761095). – bahrep

Respuesta

8

No existe el "usuario actual que está utilizando svn". Cada vez que se envía un comando SVN, las credenciales se proporcionan explícitamente en el símbolo del sistema o implícitamente a través de credenciales guardadas, que pueden incluir varios usuarios.

+2

Si ejecuta 'svn update', obviamente se está ejecutando como * algún * usuario. La pregunta es cómo saber qué usuario es. Gracias – Kip

1

Si está utilizando SVN + SSH, entonces, el nombre de usuario del usuario para una estación de trabajo determinada se encuentra en el archivo de configuración para SVN. Suponiendo que la estación de trabajo de Windows, este archivo estará en la carpeta C: \ Documents and Settings \\ Application Data \ Subversion. A continuación, puede escribir un script para obtener este nombre y hacer lo que necesite.

Creo que esto es solo para la configuración de SVN + SSH. No puede funcionar en otras configuraciones de conectividad para SVN.

+1

, el único archivo que he encontrado es ésta: 1d711cc713195841ccd6ab5d28737ce9 en C: \ Documents and Settings \ Irfân \ Datos de programa \ Subversion \ auth \ svn.simple \ ... Es diferente para cada instalación pero se puede hacer ... –

0

Si habla de las credenciales guardadas: o lo deduce del registro o confirma algo (desde la estación de trabajo/servidor mencionada) para que pueda ver lo que dice el registro.

23

En Linux, se encuentra el siguiente archivo en el directorio de inicio:

~/.subversion/auth/svn.simple

En este archivo, se puede ver el "momento usuario registrado ".

+2

Sí. Hay un archivo extrañamente nombrado allí: 851320a14c12593c4c03577412869669. Cuando se abre el archivo con el editor de texto, una de las entradas es: 'nombre de usuario V 12 MartinBerger' donde se puede ver quién está conectado. En este caso, yo. –

+0

Se puede usar la siguiente secuencia de comandos awk para extraer el nombre de usuario de allí: '/^K/{clave = 1; val = 0; } /^ V/{clave = 0; val = 1; } !/^ [KV]/{ if (clave) {kname = $ 1; } if (val && kname == "username") { imprime $ 1; val = 0; }} ' poner esto en svnuser.awk y correr como esto: ' cat ~/.subversion/auth/svn.simple/* | awk -f svnuser.awk' –

+0

Muchas gracias ... – VVB

6

En Windows se encuentra en

%APPDATA%\Subversion\auth\ 

Para encontrar este directorio, sólo tiene que ir a run (ganar-clave + r), pegue el comando anterior y pulsa entrar o haga clic en Run botón.

Para mí, había un archivo en la carpeta svn.simple. Es un archivo de texto y tiene información con datos de autenticación guardados. Tengo algo como esto:

... 
K 8 
username 
V 6 
kosta 
END 
+1

No es necesario.Simplemente ejecute 'svn auth' con la versión actualizada del cliente SVN. – bahrep

7
grep username ~/.subversion/auth/svn.simple/* --after-context=2 | tail -1 

Explicación:

  1. Grep el archivo en grep username ~/.subversion/auth/svn.simple/* buscará nombre de usuario

  2. --after-context=2 imprimirá 2 línea después de que se encuentra con nombre de usuario

Salida:

username 
V 6 
Bhavik 
  1. para imprimir sólo el nombre de usuario
    uso | tail -1 me dará mi nombre de usuario es decir Bhavik.

Espero que esto explique el código.

+0

¿Podría explicar su código? – Bulat

+0

Claro Desde el archivo en ~/.subversion/auth/svn.simple/* buscará nombre de usuario --after-context = 2 2 imprimirá la línea después de que se encuentra con nombre de usuario nombre de usuario V 6 Bhavik por último, para obtener el nombre de usuario que | tail -1 me dará mi nombre de usuario, es decir, Bhavik Espero que esto explique mi código –

+0

El único problema con esta solución es que si utiliza múltiples repositorios, solo mostrará el nombre de usuario de la última. – Craig

-1

Editar: Tenga en cuenta que esta respuesta solo aplica a las versiones SVN anteriores a la 1.9. Si se utiliza la versión SVN> 1,9, y luego probar el enfoque descrito en svn auth @ de bahrep answer

Este es un script bash que yo uso, que puse en mi ~/bin/carpeta y llama svn_whoami.sh:

#!/bin/bash 

debug=false 

for ((i=1;i<=$#;i++)) do 
    case ${!i} in 

     -h|--help) 
      programName=$(basename ${0}) 
      echo "Usage:" 
      echo " ${programName} [-h|--help] [-d|--debug]" 
      echo 
      echo "Example:" 
      echo " ${programName} --debug" 
      exit 0; 
      ;; 
     -d|--debug) 
      debug=true; 
      ;; 

    esac; 
done; 

if [ "${debug}" == "true" ]; then 
    echo "cat ~/.subversion/auth/svn.simple/* | grep -A6 username --color"; 
fi; 

cat ~/.subversion/auth/svn.simple/* | grep -A6 svn:realmstring 

salida:

$ svn_whoami.sh -d 
cat ~/.subversion/auth/svn.simple/* | grep -A6 username --color 
svn:realmstring 
V 53 
<http://your.1st.url.name.here:80> Authorization Realm 
K 8 
username 
V 5 
yourUserName 
-- 
svn:realmstring 
V 45 
<http://your.2nd.url.name.here:80> Authorization Realm 
K 8 
username 
V 5 
yourUserName 
+0

No necesita esto. Simplemente ejecute svn auth con la versión actualizada del cliente SVN. – bahrep

+0

Es cierto, aunque esto solo se agregó a partir de la versión 1.9 de SVN (ver: http://subversion.apache.org/docs/release-notes/1.9.html#svn-auth). Mi empresa usa una versión anterior en nuestros servidores de compilación, así que no estaba al tanto. Actualizaré mi respuesta para señalar que solo se aplica a las versiones anteriores a 1.9 y para referirme a su respuesta si utilizo la versión 1.9. – Craig

4

Hay varias maneras de averiguar las credenciales de inicio de sesión almacenados:

  • Ejecute svn auth para ver las credenciales y los certificados en caché en la tienda de credenciales SVN (%APPDATA%\Subversion\auth).
  • cmdkey Ejecutar para ver las credenciales almacenadas en el Administrador de credenciales de Windows.
  • Si su servidor SVN está integrado con Active Directory y es compatible con la Autenticación de Windows integrada, sus credenciales de inicio de sesión de Windows se utilizan para la autenticación, pero no se almacenan en caché. Puede ejecutar whoami para averiguar el nombre de su cuenta de usuario.

Por cierto, no se pierda Michael Hackner's answer:

No hay tal cosa como el "usuario actual que está utilizando svn". Cada vez que se envía un comando SVN, las credenciales se proporcionan explícitamente en el símbolo del sistema o implícitamente a través de las credenciales guardadas, que pueden incluir varios usuarios.