2009-05-05 6 views
3

私はCollabNETのSharpSvnライブラリを使用しています。私はコミット中にリビジョンの作者を設定したいと思いますが、私はいつも自分のWindowsユーザー名でコミットすることになります。CでSharpSVNライブラリを使ってSVNコミットの著者を設定するには

これは私のために動作しません:

System.Net.NetworkCredential oCred = new 
    System.Net.NetworkCredential("user"​, "pass"); 
client.Authentication.DefaultCredentials = oCred; 

私も試してみた:

client.SetProperty("", "svn:author", "user"); 

しかし、私は、ターゲット(最初の引数)が悪いというエラーが発生します。

C#でSubversionリポジトリへのコミットのユーザ(著者)を設定する方法を教えてください。

+0

リビジョンのプロパティを変更するには、.SetRevisionProperty()を使用する必要があります。 –

答えて

7

リビジョンにユーザ名を追加するのは、リポジトリに接続する方法によって異なります。 (通常、接続の資格情報をコピーしますが、それを行う必要はありません)。

file:///リポジトリ(通常はお勧めしません - The Subversion Bookを参照)を使用すると、コミット時に直接この問題を回避できます。

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(The Subversion Bookを参照してください)

using (SvnRepositoryClient rc = new SvnRepositoryClient()) 
{ 
    SvnSetRevisionPropertyRepositoryArgs ra; 
    ra.CallPreRevPropChangeHook = false; 
    ra.CallPostRevPropChangeHook = false; 
    rc.SetRevisionProperty(@"C:\Path\To\Repository", 12345, 
         SvnPropertyNames.SvnAuthor, "MyName", ra); 
} 

この最後の例では、リポジトリに直接ファイルアクセスを前提としていますが、それは、rをバイパス:-14] より最近のSharpSvnのリリースでもこれを許可します最適なパフォーマンスを得るためのリポジトリ

関連する問題