如果您有使用 SharpSvn .NET 库的经验,我可以利用您的专业知识在 SVN 提交期间设置提交作者。我尝试了一些事情,但除非用户保存在 TortoiseSVN 中,否则它们都会抛出 SvnRepisitoryIOException。但是,我想根据情况使用不同的用户凭据。如果我保存了用户的默认凭据,TortoiseSVN 会在设置 > 保存的数据 > 验证数据中记住它们,并且能够使用该验证用户作为提交作者来提交文件。如果您在此处单击“清除”,SharpSVN 将不知道在提交期间要对谁进行身份验证。
假设你的班级中有这些指令: using SharpSvn; 使用 SharpSvn.Security;我正在使用适用于 Windows 的免费版 VisualSVN 服务器。而且我有两个用户,一个名为“user1”,密码为“pass1”,以使下面的示例中的事情变得简单,但失败了。
如何防止此异常被抛出并使用作者的不同用户提交(在我的提交日志中)?
尝试#1:
using (SvnClient client = new SvnClient())
{
client.Authentication.Clear(); // Clear a previous authentication
client.Authentication.DefaultCredentials = new System.Net.NetworkCredential("user1", "pass1");
SvnCommitArgs ca = new SvnCommitArgs();
ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);
}
尝试#2:
using (SvnClient client = new SvnClient())
{
client.SetProperty(("", "svn:author", "user1");
SvnCommitArgs ca = new SvnCommitArgs();
ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);
}
尝试#3:
using (SvnClient client = new SvnClient())
{
client.Authentication.Clear(); // Clear predefined handlers
client.Authentication.UserNamePasswordHandlers
+= delegate(object obj, SharpSvn.Security.SvnUserNamePasswordEventArgs args)
{
args.UserName = "user1";
args.Password = "pass1";
};
SvnCommitArgs ca = new SvnCommitArgs();
ca.LogMessage = "svn log message created at " + DateTime.Now.ToString();
bool action = client.Commit(@"C:\demo_repo\demo_project\trunk\file.txt", ca);
}