Question

Je suis en train d'écrire un code C # pour effectuer plusieurs commits SVN en une seule passe, un peu comme le svnmucc outil. Jusqu'à présent, je l'ai utilisé SharpSvn pour le reste de la communication nécessaire avec SVN, donc je pense que je peux en profiter pour accomplir ce qui suit:

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.
}
Était-ce utile?

La solution

Sharpsvn ne dispose pas d'un api qui vous fournit les informations d'identification de Subversion. Elle met en œuvre la plupart du temps l'api libsvn_client, et à ce niveau il n'y a pas accès à ces données.

SharpSvn reçoit un rappel des bibliothèques de subversion lorsque ceux-ci ont besoin d'informations d'identification; dans la plupart des cas après le magasin de mot de passe builtin ne parvient pas à authentifier.

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

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

Autres conseils

Alors que l'autre réponse est toujours valable pour toutes les versions actuelles de SharpSvn, le soutien SvnMucc vient d'atterrir dans le code de développement pour SharpSvn. Dès qu'il sera possible d'effectuer des opérations de SvnMucc comme .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 cela est l'idée générale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top