从C#获取SharpSvn的凭据

时间:2009-10-06 18:51:33

标签: c# svn credentials sharpsvn

我正在编写一些C#代码,在一次通过中对SVN执行多次提交,就像工具svnmucc一样。到目前为止,我一直在使用SharpSvn与SVN进行剩余的必要通信,所以我想我可以利用它来完成以下任务:

如何获取SharpSvn使用的凭据(用户名,密码)?

我想做这样的事情:

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

2 个答案:

答案 0 :(得分:1)

Sharpsvn没有为您提供Subversion凭据的api。它主要实现了libsvn_client api,在这个级别上无法访问这些数据。

当这些需要凭据时,SharpSvn从subversion库获得回调;在大多数情况下,内置密码存储无法进行身份验证。

如果您的svnmucc代码也使用Subversion apis,您只需插入subversion预定义的身份验证处理程序。

SharpSvn本身还没有svnmucc支持。 (有人谈到有人喜欢将它添加到SharpSvn,但我最近没有任何关于此的消息)

答案 1 :(得分:0)

虽然另一个答案对所有当前版本的SharpSvn仍然有效,但SvnMucc支持刚刚进入SharpSvn的开发代码。很快就可以从.Net执行类似SvnMucc的操作。

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");
}

如果您想从现有的SvnClient执行操作,可用的语法略有不同,但这是一般的想法。