2009-10-06 45 views
2

我正在编写一些C#代码来执行多次提交SVN的工作,就像工具svnmucc一样。到目前为止,我一直在使用SharpSvn与SVN进行其他必要的通信,因此我认为我可以利用它来完成以下任务:从C#中的SharpSvn获取凭证#

如何获取凭证(用户名,密码) 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. 
} 

回答

1

Sharpsvn没有,为您提供从Subversion凭据的API。它主要实现libsvn_client api,并且在这个级别上不能访问这些数据。

当这些需要证书时,SharpSvn从Subversion库中获取回调;在大多数情况下,内置密码存储无法验证之后。

如果您svnmucc代码也使用Subversion的API,你可以插件的颠覆预定义的认证处理..

SharpSvn本身不具备svnmucc支持呢。 (有人曾经讨论过有人喜欢把这个添加到SharpSvn,但我最近没有任何消息)

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执行操作,但有一个稍微不同的语法,但这是一般的想法。