Pregunta

Estoy escribiendo algo de código C # para realizar múltiples compromete a SVN en una sola pasada, al igual que el svnmucc herramienta. Hasta ahora he estado utilizando SharpSvn para hacer el resto de la comunicación necesaria con SVN, así que estoy pensando que puedo tomar ventaja de ello para lograr lo siguiente:

¿Cómo puedo obtener las credenciales (nombre de usuario, contraseña) que son utilizados por SharpSvn?

Me gustaría hacer algo como esto:

using (SvnClient svnClient = new SvnClient())
{
    SomeFictitiousCredentialsClass credentials = svnClient.Authentication.FictitiousGetCachedCredentialsMethod();

    // Call my code that performs svnmucc-like work here, passing username and password
    // obtained from 'credentials' variable.
}
¿Fue útil?

Solución

Sharpsvn no tiene una API que proporciona las credenciales de la subversión. En su mayoría se implementa el API libsvn_client, y en este nivel no hay acceso a estos datos.

SharpSvn obtiene una devolución de llamada de las bibliotecas de subversión cuando éstas necesitan credenciales; en la mayoría de los casos después de que el almacén de contraseñas incorporado no puede autenticar.

Si su código svnmucc también utiliza las API de Subversion, que sólo puede Plugin de los manipuladores de la subversión de autenticación predefinido ..

SharpSvn en sí no tiene soporte svnmucc todavía. (No se hablaba de alguien que le gusta añadir esto a SharpSvn, pero no tengo ninguna noticia de esto últimamente)

Otros consejos

Mientras que la otra respuesta sigue siendo válida para todas las versiones actuales de SharpSvn, el apoyo SvnMucc acaba de aterrizar en el código de desarrollo para SharpSvn. Así que pronto será posible llevar a cabo operaciones similares SvnMucc de .Net.

using SharpSvn;

SvnCommitResult cr;
using (SvnMultiCommandClient mucc = new SvnMultiCommandClient("http://my-repos/svn/"))
{
    mucc.CreateDirectory("trunk");
    mucc.CreateDirectory("branches");
    mucc.CreateDirectory("tags");
    mucc.CreateDirectory("trunk/src");
    mucc.SetProperty("", "svn:auto-props", "*.cs = svn:eol-style=native");
    mucc.SetProperty("", "svn:global-ignores", "bin obj");

    mucc.Commit(out cr); // Commit r1
}
using (SvnClient client = new SvnClient())
{
   client.CheckOut("http://my-repos/svn/", @"C:\wc");
}

Hay una sintaxis ligeramente diferente disposición si desea realizar la operación de una SvnClient existente, pero esta es la idea general.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top