2010-12-08 77 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,因爲我們試圖在致電衝突處理程序之前完成儘可能多的工作。 – 2013-12-15 23:53:07

回答

4

您的當前代碼只在操作完成時掛鉤事件。如果你想鉤住所有命令上的衝突事件,你應該在調用合併之前使用一個

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

但是,您也可以將事件掛接到傳遞給client.Merge()的SvnMergeArgs上。