2010-12-08 30 views
0

sharpsvnのマージメソッドを使用して2つのリビジョンをマージするときに、競合イベントが発生しません。 SvnMergeArgsとSvnUpdateArgsで競合イベントを使用しようとしました。私は、sharpsvnの更新メソッドに続いてマージメソッドを呼び出しました。マージは作業コピーを古いリビジョンで上書きし、更新はイベントを起動しません。マージ非競合競合イベント

私はここで、紛争が解消されないことを逃していますか?以下は私のコードです。

 private static void MergingBranchedScript() 
    { 
     using (SvnClient client = new SvnClient()) 
     { 

      client.Merge(@"path\abc.sql", 
       new Uri("file:///path/Trunk/Script/abc.sql"), 
       new SvnRevisionRange(4,7), new SvnMergeArgs()); 

      SvnUpdateArgs args = new SvnUpdateArgs(); 
      SvnUpdateResult result; 
      client.Update(@"path\Script", args, out result); 
      args.Conflict += new EventHandler<SvnConflictEventArgs>(args_Conflict); 
     } 
    } 

    public static void args_Conflict(object sender, SvnConflictEventArgs e) 
    { 
     //implementation 
    } 
+0

Subversion 1.8まで、すべての種類の競合に対して競合ハンドラは呼び出されません。私たちは、木の衝突のために呼び出されなかったいくつかのケースを見つけました。 1.8以降、すべての競合を呼び出す必要がありますが、競合ハンドラを呼び出す前にできるだけ多くの作業を完了しようとすると、1.7より後の場合があります。 –

答えて

4

操作がすでに行われたときにあなたの現在のコードは、イベントをフックします。すべてのコマンドで競合イベントをフックする場合は、mergeを呼び出す前に

client.Conflict += new EventHandler<SvnConflictEventArgs>(args_Conflict); 

を使用する必要があります。

ただし、client.Merge()に渡すSvnMergeArgsでイベントをフックすることもできます。