Domanda

Sto scrivendo un po 'di codice C # per eseguire più impegna a SVN in un unico passaggio, molto simile al svnmucc strumento. Finora sono stato utilizzando SharpSvn per fare il resto della comunicazione necessaria con SVN, così sto pensando che posso approfittarne per realizzare il seguente:

Come posso ottenere le credenziali (nome utente, password) che vengono utilizzati da SharpSvn?

Mi piacerebbe fare qualcosa di simile:

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.
}
È stato utile?

Soluzione

Sharpsvn non ha un'API che fornisce le credenziali da Subversion. Esso implementa la maggior parte delle API libsvn_client, ea questo livello non c'è accesso a questi dati.

SharpSvn ottiene una richiamata dalle librerie di Subversion quando queste hanno bisogno di credenziali; nella maggior parte dei casi, dopo la memorizzazione delle password incorporato non riesce ad autenticare.

Se il codice svnmucc utilizza anche le API di Subversion, si può semplicemente plug i gestori di sovversione di autenticazione predefinito ..

SharpSvn stessa non ha ancora il supporto svnmucc. (Si era parlato di qualcuno che amava aggiungere questo al SharpSvn, ma non ho alcuna notizia su questo ultimamente)

Altri suggerimenti

Mentre l'altra risposta è ancora valida per tutte le versioni attuali di SharpSvn, supporto SvnMucc è appena sbarcato nel codice di sviluppo per SharpSvn. Così presto sarà possibile effettuare SvnMucc operazioni analoghe da .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");
}

C'è una sintassi leggermente differente disponibile se si desidera eseguire l'operazione da uno SvnClient esistente, ma questo è l'idea generale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top