SharpSvn .NET ライブラリを使用した経験がある場合は、SVN コミット中にコミット作成者を設定する際に専門知識を活用できます。いくつか試してみましたが、ユーザーが TortoiseSVN に保存されていない限り、すべて SvnRepisitoryIOException がスローされます。ただし、状況に応じて異なるユーザー資格情報を使用したいと考えています。ユーザーのデフォルト資格情報を保存した場合、TortoiseSVN は [設定] > [保存されたデータ] > [認証済みデータ] でそれらを記憶し、その認証済みユーザーをコミット作成者として使用してファイルをコミットできます。ここで「クリア」をクリックすると、SharpSVN はコミット中に誰を認証するかわかりません。
クラスに次のディレクティブがあるとします。SharpSvn.Security の使用; Windows用のVisualSVNサーバーの無料版を使用しています。そして、私は 2 人のユーザーを持っています。1 人は「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);
}