【问题标题】:Using Subversion TortoiseSVN Merge Algorithm in a .NET Project在 .NET 项目中使用 Subversion TortoiseSVN 合并算法
【发布时间】:2010-01-11 19:02:34
【问题描述】:

我有一大堆有细微差别的文件。我们使用 subversion 进行源代码控制,我喜欢 TortoiseSVN for windows 附带的 Merge/Diff 实用程序。我可以使用这个实用程序手动比较/合并两个文件。我的问题是:我如何以编程方式将两个文件以与此实用程序相同的方式合并在一起(并忽略并标记有冲突的文件)?

【问题讨论】:

    标签: .net svn tortoisesvn diff tortoisemerge


    【解决方案1】:

    这可能会有所帮助:Automating TortoiseMerge

    【讨论】:

      【解决方案2】:

      我建议使用支持已建立的合并算法的 .NET 库之一,例如这个问题中的建议:Any decent text diff/merge engine for .NET?

      不知道质量,我也偶然发现了这个:http://razor.occams.info/code/diff/

      【讨论】:

      • 在该问题上提到的任何内容都没有成功,并且您包含的链接上有一条明显的消息,表明代码有问题。
      • 如果您了解自己的数据集,那么自己手动调整某些内容可能会更简单。 (例如,在另一条评论中,您说它们“主要是插入”)。我确实遇到了一个构建差异实用程序并将差异本身封装在库中的人:menees.com/index.html
      【解决方案3】:

      我知道的几个选项:

      • Sharp SVN 由 Visual Studio 的 ANKH 源代码控制提供程序使用。但是,获取存储库很慢
      • DotSVN - 'Subversion 的.Net 端口'
      • 如果摆脱颠覆不是问题,您可以试试 Google 的 Diff Match Patch

      我不确定这两个颠覆项目是否实现了合并,但我想这是一个服务器命令。差异不会,我会为此推荐谷歌。

      如果你只是想自动化乌龟,我可能会离题。

      【讨论】:

        【解决方案4】:

        在没有人为干预的情况下合并两个没有冲突的文件可能不是一个好主意,除非您可以很容易地分辨出实际的更改是什么,例如拥有两个文件的之前版本(就像 Subversion 一样。)

        例如,给定以下两个文件,正确的做法是什么? (#列是行号,空格表示缺少行)

        --- File #1 ------------------------        --- File #2 ------------------------
        1   This is the first line                  1   This is the first line
        2   This is the second line                 2   This is the second line
        3   This is the third line
        4   This is the fourth line                 3   This is the fourth line
                                                    4   This is the fifth line
        5   This is the sixth line                  5   This is the sixth line
        

        那么,这里的正确结果是什么?

        【讨论】:

        • 对不起,我应该提到我确实有像 Subversions 一样的“之前的版本”,这就是为什么我认为我可以利用该算法,因为它非常适合。
        • 在您提供的示例中,第 3、4 和 5 行会有冲突,对吗?所以这个文件不会被合并,而是被标记为人工干预。
        • 另外,我想提一下,95% 的情况下,修改都会插入行,所以应该很少发生冲突。
        猜你喜欢
        • 2010-12-17
        • 2017-07-01
        • 2011-01-06
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 1970-01-01
        • 2012-09-05
        相关资源
        最近更新 更多