2010-12-08 15 views
0

Ich bekomme nicht das Konflikt Ereignis ausgelöst, wenn 2 Revisionen Merge-Methode von sharpsvn zusammenführen. Ich habe versucht, das Konflikt-Ereignis in SvnMergeArgs und SvnUpdateArgs zu verwenden. Ich habe die Merge-Methode aufgerufen, gefolgt von der update-Methode von sharpsvn. Die Zusammenführung überschreibt nur die Arbeitskopie mit der älteren Revision und das Update löst das Ereignis nicht aus.Verschmelzen nicht feuern Konflikt Ereignis

Was fehlt mir hier, dass der Konflikt nicht gefeuert wird. Das Folgende ist mein Code.

 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

Bis Subversion 1.8 wird der Konflikthandler nicht für alle Arten von Konflikten aufgerufen. Wir haben einige Fälle gefunden, in denen es nicht zu Baumkonflikten kam. Ab 1.8 sollte es für alle Konflikte aufgerufen werden, in einigen Fällen später als in 1.7, da wir versuchen, so viel Arbeit wie möglich zu erledigen, bevor wir den Konfliktbehandler aufrufen. –

Antwort

4

Ihr aktueller Code hakt nur das Ereignis, wenn die Operationen bereits durchgeführt wurden. Wenn Sie das Konfliktereignis an alle Befehle anhängen möchten, sollten Sie vor dem Aufruf von merge einen

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

verwenden.

Sie können das Ereignis jedoch auch an die SvnMergeArgs anhängen, die Sie an client.Merge() übergeben.

Verwandte Themen