【问题标题】:Merge not firing conflict event合并不触发冲突事件
【发布时间】:2010-12-11 05:04:01
【问题描述】:

使用Sharpsvn 的Merge 方法合并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
    }

【问题讨论】:

  • 在 Subversion 1.8 之前,不会为所有类型的冲突调用冲突处理程序。我们发现了一些不因树冲突而调用它的情况。从 1.8 开始,应该为所有冲突调用它,但在某些情况下会晚于 1.7,因为我们会在调用冲突处理程序之前尝试完成尽可能多的工作。

标签: sharpsvn


【解决方案1】:

您当前的代码仅在操作完成时才挂钩事件。如果你想在所有命令上挂钩冲突事件,你应该使用一个

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

在调用合并之前。

但您也可以在传递给 client.Merge() 的 SvnMergeArgs 上挂钩事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2020-02-28
    相关资源
    最近更新 更多