2

我正在编写一些 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.
}
4

2 回答 2

1

Sharpsvn 没有提供来自 Subversion 的凭据的 api。它主要实现 libsvn_client api,在这个级别没有访问这些数据的权限。

当需要凭据时,SharpSvn 从 subversion 库中获取回调;在大多数情况下,内置密码存储无法通过身份验证。

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

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

于 2009-10-06T20:09:02.840 回答
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 执行操作,可以使用稍微不同的语法,但这是一般的想法。

于 2013-12-15T20:04:41.567 回答