C#でSharpSVNライブラリを使用してSVNコミットの作成者を設定する方法
質問
CollabNET の SharpSvn ライブラリを使用します。コミット中にリビジョン作成者を設定したいのですが、いつも Windows ユーザー名でコミットしてしまいます。
これは私にとってはうまくいきません:
System.Net.NetworkCredential oCred = new
System.Net.NetworkCredential("user", "pass");
client.Authentication.DefaultCredentials = oCred;
私も試してみました:
client.SetProperty("", "svn:author", "user");
しかし、ターゲット(最初の引数)が間違っているというエラーが発生します。
そこで、C#でSubversionリポジトリにコミットするユーザー(作成者)を設定する方法を教えてください。
解決
リポジトリはユーザー名をリビジョンに追加する責任があるため、これはすべてリポジトリへの接続方法によって異なります。(通常は接続の資格情報をコピーしますが、必ずしもそうする必要はありません)。
file:/// リポジトリを使用する場合 (通常は推奨されません - を参照) 転覆の本)コミット時にこれを直接回避できます。
using (SvnClient client = new SvnClient())
{
client.Authentication.Clear(); // Clear predefined handlers
// Install a custom username handler
client.Authentication.UserNameHandlers +=
delegate(object sender, SvnUserNameEventArgs e)
{
e.UserName = "MyName";
};
SvnCommitArgs ca = new SvnCommitArgs { LogMessage = "Hello" }
client.Commit(dir, ca);
}
リモート リポジトリに接続すると、pre-revprop-change フックがリポジトリにインストールされているときにリビジョンの作成者を変更できます (「 転覆の本)
using (SvnClient client = new SvnClient())
{
client.SetRevisionProperty(new Uri("http://my/repository"), 12345,
SvnPropertyNames.SvnAuthor,
"MyName");
// Older SharpSvn releases allowed only the now obsolete syntax
client.SetRevisionProperty(
new SvnUriTarget(new Uri("http://my/repository"), 12345),
SvnPropertyNames.SvnAuthor,
"MyName");
}
2009-08-14]より最近のSharpsVNリリースはこれを許可しています。
using (SvnRepositoryClient rc = new SvnRepositoryClient())
{
SvnSetRevisionPropertyRepositoryArgs ra;
ra.CallPreRevPropChangeHook = false;
ra.CallPostRevPropChangeHook = false;
rc.SetRevisionProperty(@"C:\Path\To\Repository", 12345,
SvnPropertyNames.SvnAuthor, "MyName", ra);
}
この最後の例では、リポジトリへの直接ファイル アクセスを想定していますが、最適なパフォーマンスを得るためにリポジトリ フックをバイパスします。
所属していません StackOverflow