SharpSvn .NET 라이브러리 사용 경험이있는 경우 SVN 커밋 중에 커밋 작성자를 설정하는 데 전문 지식을 사용할 수 있습니다. 나는 몇 가지 시도를했지만 TortoiseSVN에 사용자가 저장되어 있지 않으면 모두 SvnRepisitoryIOException을 발생시킵니다. 그러나 상황에 따라 다른 사용자 자격 증명을 사용하려고합니다. 사용자의 기본 자격 증명을 저장 한 경우 TortoiseSVN은 설정> 저장된 데이터> 인증 된 데이터에 TortoiseSVN을 저장하고 해당 인증 된 사용자를 커밋 작성자로 사용하여 파일을 커밋 할 수 있습니다. 여기서 "지우기"를 클릭하면 SharpSVN은 커밋 중에 누가 인증해야하는지 알 수 없습니다.SharpSvn에서 커밋 작성자 설정 .NET 라이브러리에서 SvnRepisitoryIOException 예외가 발생했습니다
클래스에 다음 지시문이 있다고 가정합니다. SharpSvn; SharpSvn.Security를 사용하는 ; Windows 용 VisualSVN 서버 무료 버전을 사용하고 있습니다. 그리고 두 명의 사용자가 있습니다. 하나는 "user1"이고 하나는 "pass1"이라는 암호로, 아래 예제에서 문제가 간단하게 유지됩니다.
이 예외가 throw되지 않도록하고 작성자 (내 커밋 로그에서)에 대해 다른 사용자를 사용하여 커밋 할 수 있습니까?
시도 # 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);
}