2010-12-08 3 views
0

L'événement de conflit ne se déclenche pas lors de la fusion de 2 révisions à l'aide de la méthode Merge de sharpsvn. J'ai essayé d'utiliser l'événement de conflit dans SvnMergeArgs et SvnUpdateArgs. J'ai appelé la méthode de fusion suivie par la méthode de mise à jour de sharpsvn. La fusion écrase simplement la copie de travail avec l'ancienne révision et la mise à jour ne déclenche pas l'événement.Événement de conflit de fusion non fusionnable

Qu'est-ce qui me manque ici pour que le conflit ne se fasse pas virer? Voici mon 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

Jusqu'à Subversion 1.8, le gestionnaire de conflit n'est pas appelé pour tous les types de conflits. Nous avons trouvé quelques cas où il n'était pas appelé pour des conflits d'arbres. À partir de la 1.8, il devrait être appelé pour tous les conflits, mais dans certains cas plus tard que dans 1.7, car nous essayons d'accomplir le plus de travail possible avant d'appeler le gestionnaire de conflit. –

Répondre

4

Votre code actuel accroche uniquement l'événement lorsque les opérations sont déjà effectuées. Si vous souhaitez connecter l'événement de conflit à toutes les commandes, vous devez utiliser un

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

avant d'appeler la fusion.

Mais vous pouvez également accrocher l'événement sur le SvnMergeArgs que vous passez à client.Merge().

Questions connexes