如果您有使用.NET SharpSvn图书馆的经验,我可以用你的专业知识过程中SVN提交设置提交的作者。 我已经尝试了一些东西,但他们都抛出SvnRepisitoryIOException除非用户保存在TortoiseSVN的。 不过,我想请根据情况不同的用户凭据。 如果我已经保存了用户的默认凭据,TortoiseSVN的记得他们在设置>保存数据>认证的数据,并且使用能够提交的文件验证用户的提交者。 如果你点击“清除”在这里,SharpSVN不会知道是谁在对提交身份验证。
假设你有你的类这些指令:使用SharpSvn; 使用SharpSvn.Security; 我使用VisualSVN服务器for Windows的免费版本。 我有两个用户,一个被命名的“PASS1”,“用户1”和密码,以使问题简单化,下面的例子失败。
如何防止被抛出该异常,并承诺使用不同的用户对于作者(在我的日志上提交的)?
尝试#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);
}