2009-10-06 6 views
2

J'écris du code C# pour effectuer plusieurs validations SVN en un seul passage, un peu comme l'outil svnmucc. Jusqu'à présent, j'ai utilisé SharpSvn pour faire le reste de la communication nécessaire avec SVN, donc je pense que je peux en profiter pour accomplir ce qui suit:Obtenir des informations d'identification de SharpSvn en C#

Comment puis-je obtenir les informations d'identification (nom d'utilisateur, mot de passe) qui sont utilisés par SharpSvn?

Je voudrais faire quelque chose comme ceci:

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. 
} 

Répondre

1

Sharpsvn ne dispose pas d'un api qui vous fournit les informations d'identification de Subversion. Il implémente principalement l'API de libsvn_client, et à ce niveau il n'y a pas d'accès à ces données. SharpSvn reçoit un rappel des bibliothèques de subversion lorsque celles-ci ont besoin d'informations d'identification; dans la plupart des cas, après l'échec de l'authentification du magasin de mots de passe intégré.

Si votre code svnmucc utilise également les apis Subversion, vous pouvez simplement les plugins subversion gestionnaires d'authentification prédéfinis ..

SharpSvn lui-même n'a pas encore le soutien de svnmucc. (On a parlé de quelqu'un qui aimait ajouter ceci à SharpSvn, mais je n'ai pas de nouvelles à ce sujet dernièrement)

0

Alors que l'autre réponse est toujours valide pour toutes les versions actuelles de SharpSvn, le support de SvnMucc vient d'atterrir dans le code de développement pour SharpSvn. Il sera bientôt possible d'effectuer des opérations similaires à SvnMucc à partir 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"); 
} 

Il y a une syntaxe légèrement différente disponible si vous souhaitez effectuer l'opération à partir d'un SvnClient existant, mais l'idée générale.

Questions connexes