我正在编写一些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.
}
答案 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执行操作,可用的语法略有不同,但这是一般的想法。