【问题标题】:Quality of TFS 2008 merged codeTFS 2008 合并代码的质量
【发布时间】:2009-10-26 14:49:12
【问题描述】:

TFS 2008 合并的代码质量是否取决于所使用的编程语言?我知道在 Java / Subversion 中合并,并且将分支合并到其主干通常不会产生太多冲突。现在在我的公司,我们使用 VB.NET。当我合并两个文件时,TFS 并不总是正确地获取代码块,例如找不到正确的 If..then / end if 行。举个例子,我的意思是:文件 2 是作为文件 1 的一个分支创建的。这两个文件后来都被更改了,现在我将合并这些文件并收到冲突:标记的 end-if 行 (1) 是检测为对应,表示添加的事件处理程序 Button1_Click 正在被删除。

现在我想知道这种行为是由语言引起的(C# 与 VB.NET)还是其他源代码控制解决方案比 TFS 更好? (到目前为止,我真的很喜欢 TFS :))


文件 1:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        Label1.Text = "Hello"
        Label2.Text = "World"
    End If
End Sub

Protected Sub Button2_Click(ByVal sender, ByVal e as System.EventArgs) Handles Button2.Click

    // ....

    If Page.IsValid Then
        Label3.Text = "Hello Button 2"
    End If

    // ....
End Sub

文件 2(文件 1 的分支):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        fillTableFromDatabase()
    End If // (1)

End Sub

Protected Sub Button1_Click(ByVal sender, ByVal e as System.EventArgs) Handles Button1.Click
    // do something here
End Sub

Protected Sub Button2_Click(ByVal sender, ByVal e as System.EventArgs) Handles Button2.Click

    // ....

    If Page.IsValid Then
    End If // (1)

    // ....
End Sub

【问题讨论】:

  • 多么棒的、有用的评论。扔掉价值 1000 美元的软件,因为某个随机的人发表了没有支持论据的一次性评论。多么有帮助!
  • 感谢您的评论,但关于我的问题,您的评论和他的一样有帮助。

标签: c# vb.net merge


【解决方案1】:

我会说这是 TFS 中合并算法的问题,而不是语言引起的问题。

几年前,我工作的公司使用 Perforce,合并时很少出错。如果两个人在文件末尾添加代码,早期版本会出现问题,但他们在 2005 年版本发布时已经解决了这个问题(事实上他们很可能更早地修复了它)。

【讨论】:

    【解决方案2】:

    我使用第 3 方工具 (KDiff3) 测试了您的文件并获得了更好的结果。您可以切换 VS 2008 用于合并和比较的工具:

    http://blogs.msdn.com/jmanning/articles/535573.aspx

    【讨论】:

    • 使用您的链接找到了工具 DiffMerge (sourcegear.com/diffmerge)。至少在我看来,我用它得到了更好的结果。
    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2012-09-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2010-09-17
    • 2011-01-27
    相关资源
    最近更新 更多